V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
gy123
V2EX  ›  问与答

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

  •  1
     
  •   gy123 · 2022-03-19 13:21:34 +08:00 · 862 次点击
    这是一个创建于 980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现有一个业务方法,包含了 mysql 查询更新和 redis 查询更新操作等,没有其他的例如网络请求等 io 阻塞操作~然后现在需要批量处理;
    以每次 200 条数据进行操作:
    (1)直接循环单线程串行操作,耗时 5s;
    (2)使用多线程执行,耗时 2s;线程数上下微调后,最优大概是这个耗时;

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

    (前提) 带宽没到瓶颈,使用内网;观察数据库服务的指标,也是都没到瓶颈
    大佬们分析下,多线程并发的操作 mysql 或 redis,真的会带来性能提升吗?
    (1)比如说多线程执行,会调动 mysql 的多线程执行?redis 的网络模块多线程执行?带来的性能提升?
    (2)还是说由于使用多线程,本地多核心使用带来的提升?
    3 条回复    2022-03-20 19:39:45 +08:00
    gy123
        1
    gy123  
    OP
       2022-03-20 14:21:48 +08:00 via iPhone
    大佬们呢
    EscYezi
        2
    EscYezi  
       2022-03-20 17:06:45 +08:00 via iPhone
    优化一下减少查询次数,可能比上多线程提升更大
    gy123
        3
    gy123  
    OP
       2022-03-20 19:39:45 +08:00 via iPhone
    @EscYezi 是的。不过想要的就是不改变现有方法逻辑的前提,进行对比
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 21:28 · PVG 05:28 · LAX 13:28 · JFK 16:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.