innodb buffer pool管理--free list

buf_block_t*

    buf_LRU_get_free_block(

    buf_pool_t* buf_pool/*!< in/out: buffer pool instance */

)

功能:

访问数据页的流程。获取空闲的内存块

流程:

loop:
buf_pool_mutex_enter(buf_pool);
//UT_LIST_GET_FIRST(buf_pool->free),为空的话block=NULL
//1
block = buf_LRU_get_free_only(buf_pool);
if (block) {
    buf_pool_mutex_exit(buf_pool);
    memset(&block->page.zip, 0, sizeof block->page.zip);
    return(block);
}
//2
if (buf_pool->init_flush[BUF_FLUSH_LRU]
	    && srv_use_doublewrite_buf
	    && buf_dblwr != NULL) {
	buf_pool_mutex_exit(buf_pool);
	buf_flush_wait_batch_end(buf_pool, BUF_FLUSH_LRU);
	goto loop;
}
//3
freed = FALSE;
//第一次进来时,try_LRU_scan为TRUE
if (buf_pool->try_LRU_scan || n_iterations > 0) {
    freed = buf_LRU_scan_and_free_block(buf_pool,n_iterations > 0);
        //3.1
   
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值