高性能MySQL--一部分笔记

开启慢查询日志是目前开销最低、精度最高的测量查询时间的工具。在I/O密集型和CPU密集型中开销都不大
Show profile
Show status
B树索引
前缀压缩技术:适合I/O密集型,如果不是I/O密集型,由于每个节点解压要依赖于前一个节点,对于顺序查找效果很好。
B树索引加快了访问数据的速度,存储引擎不用扫描全表而是从索引的根节点开始搜索,顺序组织数据适合查找范围数据
B树索引适用于全键值、键值范围、或键前缀查找(根据最左前缀的查找)。
哈希索引:根据where条件中的参数生成合适的哈希函数,索引列进行匹配,匹配到对应的哈希桶,也即对应行的指针
(优:比B树索引简单,因为不需要遍历B树,访问速度会更快。缺:不能进行范围查询,不能加速排序,数据大量重复时效率低下)
索引查询会断:从左往右,中间列断了或者是第一列中查找以某个字母结尾的、有范围查找索引都会断。只要不断,顺序不对优化器会帮你改过来。因此第一列必须完整查询以后的列看断不断或者是不是范围查找。索引列不能是表达式的一部分。
对于很长的列:使用前缀索引
位图索引:对于性别、婚姻、等基数值较小的列建索引,但数据不应该频繁的进行更新。查询时使用与操作等进行判断。
索引可以让服务器快速定位到表的位置,B树索引顺序存储数据因此可以ORDER BY和GROUP BY,索引中只存储实际的列值,所以某些查询只使用索引就可以完成全部查询。
1.索引可以大大减少服务器需要扫描的数据量
2.索引可以帮助服务器避免排序和临时表
3.索引可以将随机I/O变为顺序I/O
长键值使用前缀或后缀索引
索引合并策略:
多个AND做相交操作需要一个包含所有相关列的多列索引
多个OR做合并操作需要耗费大量的CPU和内存资源在算法的缓存、排序和合并操作上。
三星索引一次查询通常只需要一次磁盘随机读以及一次窄索引片的扫描
一星:与查询相关的索引行是相邻的,where后面的等值谓词可以匹配索引列顺序。
二星:排序的列在查询中
三星:索引行包含查询语句中所有的列
聚簇索引:用主键来进行聚集,将主键和数据都放在同一个叶节点上,用的也是B树的格式
一个聚簇索引有一个主键列、一个TID(事务ID)、一个RP(回滚指针)、以及非主键列

猜你喜欢

转载自blog.csdn.net/Parallel2333/article/details/81279141