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 以上出现的几个关键点解读在我的博客里都有体现,感兴趣的可以去看
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号