介绍:
主要目的为 传统的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表中所有行,要快于 ,截段操作的事物,执行要快很多
上一篇优化《二》 之 select 优化 where 字句优化
文章持续更新,转发表明出处,方便更新!