慢SQL优化
# 导致SQL执⾏慢的原因
1. 硬件问题。如⽹络速度慢,内存不⾜,I/O吞吐量⼩,磁盘空间满了等。
2. 没有索引或者索引失效。(⼀般在互联⽹公司,DBA会在半夜把表锁了,重新建⽴⼀遍索引,因为当你删除某个数据的时候,索引的树结构就不完整了。所以互联⽹公司的数据做的是假删除.⼀是为了做数据分析,⼆是为了不破坏索引)
3. 数据过多(分库分表)
4. 服务器调优及各个参数设置(调整myf)
索引:sql优化的几种方式
Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,⼀般都是指B树结构组织的索引(B+Tree 索引)。索引如图所⽰:
最外层浅蓝⾊磁盘块1⾥有数据17、35(深蓝⾊)和指针P1、P2、P3(黄⾊)。P1指针表⽰⼩于17的磁盘块,P2是在17-35之间,P3指向⼤于35的磁盘块。真实数据存在于⼦叶节点也就是最底下的⼀层3、5、9、10、13......⾮叶⼦节点不存储真实的数据,只存储指引搜索⽅向的数据项,如17、35。
查过程:例如搜索28数据项,⾸先加载磁盘块1到内存中,发⽣⼀次I/O,⽤⼆分查确定在P2指针。接着发现28在26和30之间,通过P2指针的地址加载磁盘块3到内存,发⽣第⼆次I/O。⽤同样的⽅式到磁盘块8,发⽣第三次I/O。
真实的情况是,上⾯3层的B+Tree可以表⽰上百万的数据,上百万的数据只发⽣了三次I/O⽽不是上百万次I/O,时间提升是巨⼤的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论