[MySQL 源码] 从buffer pool中获取空闲block流程

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

[MySQL 源码] 从buffer pool中获取空闲block流程

zhaiwx_yinfeng 2016-05-10 14:12:16 浏览814
展开阅读全文
当我们将一个page读入内存时,需要先为其分配一个block,从buffer pool中获取。入口函数为buf_LRU_get_free_block
之前在http://mysqllover.com/?p=303有简要介绍,这里详细看看,当然,跟最近博客的主题一样,我们还是主要针对压缩表来分析。

以下分析基于Percona Server 5.5.18

buf_LRU_get_free_block
loop:
1.block = buf_LRU_get_free_only(buf_pool)
首先从buf_pool->free链表尾部读取,如果有空闲页,则将其从buf_pool->free中移除,设置bpage->state=BUF_BLOCK_READY_FOR_USE,然后返回
上述流程需要加buf_pool->fre

网友评论

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