[MySQL学习]Innodb压缩表之内存分配/回收

  1. 云栖社区>
  2. 博客>
  3. 正文

[MySQL学习]Innodb压缩表之内存分配/回收

zhaiwx_yinfeng 2016-05-10 14:22:21 浏览1617
展开阅读全文

最近看到Yoshinori Matsunobu在官方buglist上提交的一个Bug#68077,大意是说,当使用压缩表时,在bp吃紧时,存在过度碎片合并的情况。Innodb压缩表由于存在不同的Page Size,因此使用buddy allocator的方式进行内存分配,他的内存块来自于buffer pool中。

如bug#68077所提到的,如果我们使用的全部是4kb的内存块,那么把他们合并成8k的又有什么意义呢?并且在碎片整理的过程中,函数buf_buddy_free

的效率是很低的。在之前已经碰到过很多类似的案例,例如DROP TABLE,在遍历block,释放adaptive hash index记录时,可能会在这里hang住。

但从Marko的角度来看,由于内存是从buffer pool中分配的,如果不做碎片合并的话,很容易导

网友评论

登录后评论
0/500
评论
zhaiwx_yinfeng
+ 关注