MySql调优(2)change buffer

唯⼀索引普通索引选择难题

面试经常被问,核⼼是需要回答到change buffer,那change buffer⼜是个什么东⻄呢?
当需要更新⼀个数据⻚时,如果数据⻚在内存中就直接更新,⽽如果这个数据⻚还没有在内存中的话,
在不影响数据⼀致性的前提下,InooDB会将这些更新操作缓存在change buffer中,这样就不需要从磁
盘中读⼊这个数据⻚了

在下次查询需要访问这个数据⻚的时候,将数据⻚读⼊内存,然后执⾏change buffer中与这个⻚有关的
操作,通过这种⽅式就能保证这个数据逻辑的正确性。
需要说明的是,虽然名字叫作change buffer,实际上它是可以持久化的数据。也就是说,change buffer
在内存中有拷⻉,也会被写⼊到磁盘上。
将change buffer中的操作应⽤到原数据⻚,得到最新结果的过程称为merge。
除了访问这个数据⻚会触发merge外,系统有后台线程会定期merge。在数据库正常关闭(shutdown)
的过程中,也会执⾏merge操作。

image.png

显然,如果能够将更新操作先记录在change buffer,减少读磁盘,语句的执⾏速度会得到明显的提升。
⽽且,数据读⼊内存是需要占⽤buffer pool的,所以这种⽅式还能够避免占⽤内存,提⾼内存利⽤率

那么,什么条件下可以使⽤change buffer呢?

对于唯⼀索引来说,所有的更新操作都要先判断这个操作是否违反唯⼀性约束。
要判断表中是否存在这个数据,⽽这必须要将数据⻚读⼊内存才能判断,如果都已经读⼊到内存了,那
直接更新内存会更快,就没必要使⽤change buffer了。
因此,唯⼀索引的更新就不能使⽤change buffer,实际上也只有普通索引可以使⽤。
change buffer⽤的是buffer pool⾥的内存,因此不能⽆限增⼤,change buffer的⼤⼩,可以通过参数
innodb_change_buffer_max_size来动态设置,这个参数设置为50的时候,表示change buffer的⼤⼩最
多只能占⽤buffer pool的50%。
将数据从磁盘读⼊内存涉及随机IO的访问,是数据库⾥⾯成本最⾼的操作之⼀,change buffer因为减少
了随机磁盘访问,所以对更新性能的提升是会很明显的

change buffer的使⽤场景

因为merge的时候是真正进⾏数据更新的时刻,⽽change buffer的主要⽬的就是将记录的变更动作缓存
下来,所以在⼀个数据⻚做merge之前,change buffer记录的变更越多(也就是这个⻚⾯上要更新的次
数越多),收益就越⼤。
因此,对于写多读少的业务来说,⻚⾯在写完以后⻢上被访问到的概率⽐较⼩,此时change buffer的使
⽤效果最好,这种业务模型常⻅的就是账单类、⽇志类的系统。
反过来,假设⼀个业务的更新模式是写⼊之后⻢上会做查询,那么即使满⾜了条件,将更新先记录在
change buffer,但之后由于⻢上要访问这个数据⻚,会⽴即触发merge过程。这样随机访问IO的次数不
会减少,反⽽增加了change buffer的维护代价,所以,对于这种业务模式来说,change buffer反⽽起到
了副作⽤

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349