关于单线程串行操作 mysql 或 redis 改为多线程并行操作是否提升性能

2022-03-19 13:21:34 +08:00
 gy123
现有一个业务方法,包含了 mysql 查询更新和 redis 查询更新操作等,没有其他的例如网络请求等 io 阻塞操作~然后现在需要批量处理;
以每次 200 条数据进行操作:
(1)直接循环单线程串行操作,耗时 5s;
(2)使用多线程执行,耗时 2s;线程数上下微调后,最优大概是这个耗时;

经网上查询,类似的问题,比如单线程查询大量 mysql 操作和将任务分解并发查询的性能差异:结合网上和分析大概是要看瓶颈所在,如果在于 mysql 服务的磁盘瓶颈或宽带,则不会带来什么提升等;

(前提) 带宽没到瓶颈,使用内网;观察数据库服务的指标,也是都没到瓶颈
大佬们分析下,多线程并发的操作 mysql 或 redis,真的会带来性能提升吗?
(1)比如说多线程执行,会调动 mysql 的多线程执行?redis 的网络模块多线程执行?带来的性能提升?
(2)还是说由于使用多线程,本地多核心使用带来的提升?
862 次点击
所在节点    问与答
3 条回复
gy123
2022-03-20 14:21:48 +08:00
大佬们呢
EscYezi
2022-03-20 17:06:45 +08:00
优化一下减少查询次数,可能比上多线程提升更大
gy123
2022-03-20 19:39:45 +08:00
@EscYezi 是的。不过想要的就是不改变现有方法逻辑的前提,进行对比

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/841449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX