innodb buffer pool管理--LRU插入

MySQL源码分析
yzs87
buf_LRU_add_block->buf_LRU_add_block_low
    //buf_page_t有该页属于的buffer pool对象
    buf_pool_t*	buf_pool = buf_pool_from_bpage(bpage);
    //如果old为FALSE,即不向old插;或者LRU链表长度小于512
    //插入到LRU链表头部
    if (!old || (UT_LIST_GET_LEN(buf_pool->LRU) < BUF_LRU_OLD_MIN_LEN)) {
        UT_LIST_ADD_FIRST(LRU, buf_pool->LRU, bpage);
        bpage->freed_page_clock = buf_pool->freed_page_clock;
    }else{
        //否则插在LRU_old后
        UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU, buf_pool->LRU_old,bpage);
        buf_pool->LRU_old_len++;
    }
    incr_LRU_size_in_bytes(bpage, buf_pool);
    //1)LRU长度>512,调整
    //2)LRU==512,设置一个old
    //3)否则,设置bpage
    if (UT_LIST_GET_LEN(buf_pool->LRU) > BUF_LRU_OLD_MIN_LEN) {
        buf_page_set_old(bpage, old);
        buf_LRU_old_adjust_len(buf_pool);
    }else if (UT_LIST_GET_LEN(buf_pool->LRU) == BUF_LRU_OLD_MIN_LEN) {
        b
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值