C API 和获取原始套接字

发布于 2024-12-04 22:23:06 字数 153 浏览 2 评论 0原文

我正在编写需要与 mysql 通信的应用程序。它是一个单线程应用程序,使用 epoll linux 系统调用来进行多路复用客户端,但问题是每当我对数据库进行(大量)查询时,一切都会停止。所以我想从 mysql 获取实际的套接字并将其放入我的 epoll 中,这样我也可以复用数据库。这可能吗?

I'm writing app that needs to commuicate with mysql. Its a single threaded application that uses epoll linux system call for multiplexing clients, but the problem is that everything stalls whenever I'm doing (heavy) queries to database. So I thought to get actual socket from mysql and put it into my epoll so I could multiplex database too. Is that possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

飘逸的'云 2024-12-11 22:23:06

文章 http://jan.kneschke.de /2008/9/9/async-mysql-queries-with-c-api/ 回答了问题。适用于 MySQL 5.6。

Article http://jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/ answers the question. Works with MySQL 5.6.

靑春怀旧 2024-12-11 22:23:06

实际情况比这要复杂一些。如果“一切都停止了”(只能猜测你的技术含义)那么你的 MySQL 服务器可能已经过载。多路复用单个连接不仅可能行不通,而且也无法解决根本问题。

相反,请修复您的查询和索引,以便不会发生巨大的表扫描和文件排序。

It's a bit more complicated than that. If "everything stalls" (can only guess at what you technically mean by that) then your MySQL server is probably overloaded. Multiplexing a single connection is not only probably not going to work, but it's not going to get around that root issue, either.

Instead, fix your queries and indexes so that no huge table scans and filesorting occurs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文