聚簇索引(主键索引):叶子记录整条记录
二级索引(非主键,联合索引等):叶子记录聚簇索引的值
一个索引树有很多叶子page,page直接是双向,页内的记录是单向,是通过指针连接在一起
系统长期运行或频繁dml操作可能会导致页存在内存碎片,当insert数据为8字节大小到一个page是同时该page存在10字节大小的已删除空间,那么会优先使用该空间,至此之后一直未能利用到剩余的2字节那么就是内存碎片
聚簇索引列尽量使用有序或趋向有序的值:
有序主键 vs 随机主键
1. 有序主键在内存分配时page会相邻,若有下一条数据insert时,page若有未使用空间很可能会分配在同一页,主键--key有序相邻
2. 随机主键在内存分配时page极有可能不会相邻,若第一条insert分配在第一页,下一条分配在第十页,那么会造成内存的浪费(1M数据可能会占有10M的内存)
索引下推: 在索引树中过滤数据,减少回表次数,进而减少MySQL Server与存储引擎的交互数据 (减少IO)
回表:通过二级索引在对应二级索引树得到聚簇索引列的值再去聚簇索引树获取到整条数据
索引覆盖: 索引列包含查询列,避免二级索引回表 ---- 二级索引树中能直接获取到所有查询列的值
文献:
https://blog.csdn.net/sinat_29774479/article/details/103470244 (索引下推)
https://zhuanlan.zhihu.com/p/66946072
慢sql
- 知道慢sql来源: 客户反馈, 慢sql监控
- 是否高峰期原因: 1. 偶尔慢 , 高峰时期导致 2. 一直慢
- 使用SHOW VARIABLES LIKE '%query%' 查询慢sql监控日志相关信息 https://www.cnblogs.com/xk920/p/11132038.html
https://blog.csdn.net/smile_795/article/details/107855983 - Explain分析
- 优化sql