innodb buffer pool管理--LRU old何时make young

MySQL源码分析
yzs87
buf_LRU_make_block_young(buf_page_t*	bpage)
    buf_LRU_remove_block(bpage);
    buf_LRU_add_block_low(bpage, FALSE);//插入到头
    //make young函数将该页从LRU中删除,然后再插入到头部
buf_page_make_young_if_needed ->buf_page_make_young-> buf_LRU_make_block_young
关注make young的条件:buf_page_peek_if_too_old(bpage)
if (buf_pool->freed_page_clock == 0) {
    //当前buf pool没有evict任何page,说明buf pool足够大,page能够完全放到内
    //存,不需将page从LRU_old移动到LRU_head
    return(FALSE);
} else if (buf_LRU_old_threshold_ms && bpage->old) {
    //最近一次访问时间
    unsigned	access_time = buf_page_is_accessed(bpage);
    if(access_time>0 && (ut_time_ms() - access_time) >= buf_LRU_old_threshold_ms){
       return TRUE;
    }
    buf_pool->stat.n_pages_not_made_young++;
    return FALSE;
} else {
    //下面判断当前page是否足够新,属于MRU,则不需移动
	return(!buf_page_peek_if_young(bpa
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值