c++ - 使用 Qt 框架减少多线程应用程序中的数据库连接的最佳策略

标签 c++ mysql multithreading qt

我有一台与很多设备(>1000)通信的服务器。每个连接都有自己的线程。现在,我意识到我必须将我的 mysql 配置设置为允许 >1000 个打开的并发连接,在我看来这似乎是一个非常糟糕的主意。

Qt 文档说每个线程都需要自己的连接:http://qt-project.org/doc/qt-4.8/threads-modules.html#threads-and-the-sql-module

所以,我必须打电话

 QSqlDatabase::addDatabase("QMYSQL", "thread specific string");

在每个线程中。

此处的最佳做法是什么?

最佳答案

我认为某种资源池在这里是合适的。

根据超过 1000 个设备线程的数据库工作负载,单个数据库线程可能可以管理它,否则您将需要多个数据库线程。

然后设置一个从设备线程到数据库线程的排队系统,其中设备推送工作,数据库线程拉出工作单元并执行查询。

我刚刚意识到,我只是在考虑像某种日志记录一样写入数据库,如果您正在做的是从数据库读取并写入设备,那么这个想法可能无法在不修改的情况下工作。

关于c++ - 使用 Qt 框架减少多线程应用程序中的数据库连接的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9564393/

相关文章:

MySQL错误61无法连接

java - 线程中的Android无限循环

c++ - 在 Qt 中检测进程已完成

mysql 时间到日期转换获取空值

mysql - mysql 在性能方面与 oracle 有何不同?

multithreading - SFENCE 是否会阻止存储缓冲区对 MESI 隐藏更改?

c# - 如何从其他函数访问线程名称?

c++ - 向类添加复制构造函数

c++ - 在 python 中嗅探音频?

c++ - 为什么 std::remove_pointer 也删除 const 限定符