【发布时间】:2011-11-18 13:54:07
【问题描述】:
我正在编写需要与 mysql 通信的应用程序。它是一个使用 epoll linux 系统调用来多路复用客户端的单线程应用程序,但问题是每当我对数据库进行(大量)查询时,一切都会停止。所以我想从 mysql 获取实际的套接字并将其放入我的 epoll 中,这样我也可以多路复用数据库。这可能吗?
【问题讨论】:
标签: mysql c multiplexing
我正在编写需要与 mysql 通信的应用程序。它是一个使用 epoll linux 系统调用来多路复用客户端的单线程应用程序,但问题是每当我对数据库进行(大量)查询时,一切都会停止。所以我想从 mysql 获取实际的套接字并将其放入我的 epoll 中,这样我也可以多路复用数据库。这可能吗?
【问题讨论】:
标签: mysql c multiplexing
文章http://jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/ 回答了这个问题。适用于 MySQL 5.6。
比这要复杂一些。如果“一切都停止了”(只能猜测您在技术上的意思),那么您的 MySQL 服务器可能已经超载。多路复用单个连接不仅可能不起作用,而且也无法解决这个根本问题。
相反,请修复您的查询和索引,以免发生巨大的表扫描和文件排序。
【讨论】: