你分得清MySQL普通索引和唯一索引了吗?( 三 )
要读Page2时 , 需把Page2从磁盘读入内存 , 然后应用change buffer里面的操作日志 , 生成一个正确版本并返回结果 。 可见直到需读Page2时 , 该数据页才被读入内存 。
所以 , 要简单对比这俩机制对更新性能影响
- redo log 主要节省随机写磁盘的IO消耗(转成顺序写)
- change buffer主要节省随机读磁盘的IO消耗
6.1 关于到底是否使用唯一索引主要纠结在“业务可能无法确保” 。 本文前提是“业务代码已经保证不会写入重复数据”下 , 讨论性能问题 。
- 如果业务不能保证 , 或者业务就是要求数据库来做约束 , 那么没得选 , 必须创建唯一索引 。 这种情况下 , 本文意义在于 , 如果碰上大量插入数据慢、内存命中率低时 , 多提供一个排查思路 。
- 然后 , 在一些“归档库”的场景 , 可考虑使用唯一索引的 。 比如 , 线上数据只需保留半年 , 然后历史数据保存在归档库 。 此时 , 归档数据已是确保没有唯一键冲突 。 要提高归档效率 , 可考虑把表的唯一索引改普通索引 。
6.3 merge的过程是否会把数据直接写回磁盘?merge执行流程
- 从磁盘读入数据页到内存(老版本数据页)
- 从change buffer找出该数据页的change buffer 记录(可能有多个) , 依次应用 , 得到新版数据页
- 写redo log该redo log包含数据的变更和change buffer的变更
- 麒麟|荣耀新款,麒麟810+4800万超清像素,你还在犹豫什么呢?
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面
- 国产手机|国产手机新品频发,果粉们你们还能忍得住吗?
- 减重|快看!奇瑞蚂蚁都减重了 那你还焦虑什么?
- 化妆产品|直播带货年入百万,这8个行业告诉你:是真的
- 关华为P50Pro|华为P50Pro概念图:半圆形6摄,看完iPhone12劝你暂时别买
- 屏幕|苹果iPhone12屏幕不仅发白,还绿的你发慌,用户:环保绿
- 主题活动|首届“上海在线生活节”启动,8大电商平台优惠活动承包你的12月
- 月入|一上网,感觉网上每个人都是月入过万,到底是错觉还是你out了?
- 社区团购|你在买菜APP上薅的每一根羊毛,都将加倍奉还!
