如何解决多线程操作数据库问题 C 多线程消息队列?

[更新]
·
·
分类:互联网
1255 阅读

C

C 多线程消息队列?

多线程消息队列?

看什么情况下使用,方法很多。
如果调用频度不高,我做量化分析程序一般是用c 启用python进程,用的pypy速度快点,pypy生成结果到redis或mysql的内存表中,调用结束后c 去redis或mysql的内存表中取出来,你也可以使用文件写入来完成,但文件写入容易出现不同步问题,不想用网络版的,可以用sqlite写入结果,再在另外一个程序用sqlite读取。如果类似互联网业务,可以使用消息队列,消息服务器通信。如果你的程序需要线程安全,需要临界区保护,最好用消息队列这种支持多线程多进程同时访问,消息队列比数据库存储要快,但没有数据库方便。
有个c 版的本机版vedis,高仿redis的嵌入版,你可以用这个初期开发,如果需要切换到redis,很容易修改vedis成redis,ssdb可以把redis落地存储,ssdb是高仿redis的存储版。
如果没有数据存储,可以使用socket通信,或用多进程通信,如chrome是多进程的,通信用的命名管道(Named Pipe),多语言之间调用理论上可以用这个。命名管道要比消息队列快,但需要自己定制。调用方法的协议,可以使用json来完成,这样n多语言都可以通用,如果追求性能可能使用二进制通信协议。
python调用c语言方法也很成熟,但需要自己写一些代码包装一下,需要防止内存泄漏,多线程同步,阻塞,异常等问题。

SQL数据库内表太多,查询一次要半个多小时,如何优化?

说的太模糊,单条查询还是全量查询。。。是按照给定需求导出数据还是啥的,自己拆分 多线程查找合并结果基本ok 数据量大的话 时间稍微长点正常,

mysql多线程什么意思?

数据库有自己的连接锁机制,如果是针对同一台机器使用同一个接口进行插入的话多线程和单线程是一样的。除非你有好几台数据库服务器,这样再使用多线程来进行上面的工作的话效率才会明显提高。

如何保证多线程从mysql数据库查询的数据不重复?

答:保证多线程从mysql数据库查询的数据不重复的方法步骤如下。
1. 使用navicat连接上mysql数据库,新建一张用户表。
2. 然后填入几条测试内容,来演示测试效果。
3. 选中用户名右击选择设计表。这就是保证多线程从mysql数据库查询的数据不重复的方法。