MySQL实战45讲
普通索引、唯一索引
普通索引允许被索引的数据列包含重复的值,而唯一索引不可以。
change buffer
当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在
内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change
buffer 中,这样就不需要从磁盘中读入这个数据页了。
merge
将change buffer中的操作应用到原数据页,得到最新结果的过程称为merge。
触发时间分别在,被访问时、后台线程定期操作、数据库正常关闭时
redo log 与 change buffer
redo log保证不会丢失change buffer
redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘
的 IO 消耗
业务保证唯一性情况下选择普通索引
由于唯一索引用不上 change buffer 的优化机制,因此如果业务可以接受,从性能角度出发我建议你优先考虑非唯一索引。