MySQL插入数据很慢优化思路

2022-09-25 12:36:40

MySQL插入数据很慢优化思路

解决方法与思路

  1. 插入数据量非常大的场景
    加大mysql配置中的bulk_insert_buffer_size,这个参数默认为8M
    bulk_insert_buffer_size=100M
    修改该条记录有助于千万级别数据批量插入。

  2. 如果只是单纯避免业务侧阻塞
    改写所有insert语句为insert delayed
    这个insert delayed不同之处在于:立即返回结果,后台进行处理插入。

  3. 锁方面的排查
    业务侧阻塞排查:
    查询是否是因为线程长期获取不到某个锁导致
    是否某个线程在进行某些定时任务在拉数据什么的。
    数据库侧阻塞排查:
    查询是否因为某个操作加了表锁
    是否有某个操作锁了整个表等

  4. 优化索引,是否因为主键无序且长度过长,导致插入的时候维护B+树太慢
    产生了各种页分裂等问题

  5. 还有一种场景导致插入很慢:
    https://blog.csdn.net/xiaolyuh123/article/details/78793626
    https://blog.csdn.net/coco3600/article/details/100232009?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control
    与MySQL日志有关,排查binlog日志是否太大,导致进行操作写入新的biglog时需要太长的时间
    这种方式可以通过三个手段解决:
    备份过去太大的binlog日志,重新生成新的binlog
    调整biglog的最大值
    极端一点:设置表属性以及索引属性为nologing属性,但是面临数据丢失的风险,没有log记录就无法找回

  6. 在这里插入图片描述

  • 作者:月犹依依
  • 原文链接:https://blog.csdn.net/weixin_38370441/article/details/115678398
    更新时间:2022-09-25 12:36:40