mysql 原理~buffer_pool并发

一 简介 buffer pool的并发访问机制的改进与局限

二 详细
   1 innodb_buffer_pool_instance
      1 当较多数据加载到内存时, 使用多缓存实例能减少缓存争用锁情况。
      2 全局大锁 buffer pool mutex 依然存在,直到8.0才进行拆分解决
   2 page_cleaner的出现
     1 出现了单独的page_cleaner线程,独立承担了刷页工作,减少了master的负担
     2 出现了多线程的page_cleaner,加快了脏页刷新的效率
   3 page_celaner不能解决的问题
      基本就是高并发下page_cleaner超负荷工作时进行的CKPT,周期性的CKPT并不在考虑范围内
     1 redo不够用,覆盖前强制进行CKPT
     2 LRU列表已到达空闲页最少的阈值,需要强制进行CKPT
4 purge的出现
    1 出现了单独的purge线程,独立承担了清理undo和删除标记的工作,减少了master的负担
5 dblwr成为重要的单点瓶颈。
   1 非SSD硬盘必须打开double write buffer。
   2 涉及到的锁 分为两部分:single page flush和batch flush,
   3 即使拆分了多个page cleaner,最终扩展性还是受限于dblwr

    4 官方已经开始对此开始优化工作

三 总结

   1  只是根据淘宝内核周报写的一点自己的总结,还会继续补充

   2 以上出现的几个关键点解读在我的博客里都有体现,感兴趣的可以去看

猜你喜欢

转载自www.cnblogs.com/danhuangpai/p/11434511.html