mysql8.0 之 sql 优化《三》 之 优化数据更新 insert delete update 总览总结

版权声明:本文为博主原创文章,转载注明出处,欢迎多多交流,乐在沟通,有需要请联系邮箱:[email protected] https://blog.csdn.net/weixin_42749765/article/details/88289967

介绍:

主要目的为 传统的oltp应程序和web程序,经常执行大量的小数据更改操作,并发操作,提升速度。主要考虑因素,写入大量数据并使用索引保持最新I/O 

insert 优化

  • 1.理想情况使用单个链接进行操作,如果一次性有多条新数据要加入,可以尝试 将索引更新和一致性放到延迟到最后

插入行所需的时间由以下因素决定,其中数字表示大致比例:

  • 连接:(3)

  • 向服务器发送查询:(2)

  • 解析查询:(2)

  • 插入行:(1×行的大小)

  • 插入索引:(1×索引数)

  • 结束:(1)

这没有考虑打开表的初始开销,每个并发运行的查询都会执行一次。

N假设B树索引, 表的大小会减慢日志插入索引的速度。

 

您可以使用以下方法来加速插入:

  • 如果同一客户端插入多行,使用insert 包含多个value的方式插入 ,这个比单行插入快特别多倍。
  • 如果要将数据添加到非空表中,可以调整bulk_insert_buffer_size 变量 让数据执行更快
  • 从文本文件加载时,使用load data 比普通insert 快20倍
  • 利用默认值,只有插入时与默认值不同才插入,可以减少mysql必须的解析操作,可以提高插入速度

​​​​​​​

 

 

优化update 

  • update 优化类似于select 具有写入额外的查询开销。
  • 写入速度取决于要更新的数据量和更新的索引数量。未更爱的索引不会更新。
  • 采用延迟更新,然后联系执行许多更新。如果锁定表,一次更新多个比单多次执行要快很多。
  • 对应MyISAM 使用动态行格式的表,将行更新 改外 更长的中长度可能会才分该行,如果经常这样做可以使用 optimize table 。

 

优化delete 

  • 删除MyISAM表中各行所需要的时间 和索引数量完全成比例。
  • 要更快的删除行,可以通过增加key_buffer_size 系统变量增加秘钥缓存的大小来实现。
  • 删除MyISAM表中所有行,要快于 ,截段操作的事物,执行要快很多

 

 

 

 

 

 

优化总篇:https://blog.csdn.net/weixin_42749765/article/details/88223273

上一篇优化《二》 之 select 优化 where 字句优化:https://blog.csdn.net/weixin_42749765/article/details/88227280

 

 

文章持续更新,转发表明出处,方便更新!

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_42749765/article/details/88289967