技术主题
本文是对mysql数据库的索引理解,结合自己在实际的工作中,对索引的认识以及实践,得出的一些好的结论。方便工程师进行学习原理,以及避免许多自己踩过的坑。
技术原理
一:普通索引和唯一索引的选择
1)普通索引来说,查找到满足条件的第一个记录 (5,500) 后,需要查找下一个记录,因为当前无法保证重复的元素。
2)当需要读一条记录的时候,并不是将这个记录本身从磁盘读出来,而是以页为单位,将其整体读入内存。在 InnoDB 中,每个数据页的大小默认是 16KB,这样大概率情况下,下一条记录直接在内存中查找。
3)对于写多读少的业务来说,页面在写完以后马上被访问到的概率比较小,此时 change buffer 的使用效果最好。这种业务模型常见的就是账单类、日志类的系统。
4)redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘的 IO 消耗。
5)change buffer 存储在redo log,即使在断电的情况下,也不会造成数据的丢失。
二:Mysql强制索引-更改索引优化器的方法
1)而优化器选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句。在数据库里面,扫描行数是影响执行代价的因素之一。扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少。当然,扫描行数并不是唯一的判断标