innodb buffer pool管理--LRU old何时make young
来源:互联网 发布:mac传奇单机版 编辑:程序博客网 时间:2024/05/08 23:44
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) { //最近一次访问时间 unsignedaccess_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(bpage)); return((buf_pool->freed_page_clock & ((1UL << 31) - 1)) < ((ulint) bpage->freed_page_clock + (buf_pool->curr_size * (BUF_LRU_OLD_RATIO_DIV - buf_pool->LRU_old_ratio) / (BUF_LRU_OLD_RATIO_DIV * 4))));}
1、buf_page->access_time初始化为0,该值是访问的具体时间
2、innodb_old_blocks_time决定buf_LRU_old_threshold_ms,默认值是1000即1S
3、本次访问时间距离上次访问时间超过1S,就将该页移动到LRU首部
4、buf_page_peek_if_young公式的意思:
buf_pool->freed_page_clock:本 buf pool一共evict了多少页
bpage->freed_page_clock :本page最后一次移动到buf LRU_head时,buf pool当时的freed_page_clock取值
buf_pool->curr_size:当前buf pool使用的页面数量
BUF_LRU_OLD_RATIO_DIV:buf_pool->LRU_old_ratio的坟墓,取值1024
buf_pool->LRU_old_ratio:buf pool oldLRU的占比。以1024为分母。
默认3/8的情况下,为378
解释:从page上一次移动到LRU_head以来,buf pool在此期间evict的page数量超过buf poolLRU young list 长度的1/4,那么说明本page已经不够年轻,本次访问需要移动page到LRU_head,否则说明该page属于MRU,不需要移动
阅读全文
0 0
- innodb buffer pool管理--LRU old何时make young
- innodb buffer pool管理--LRU young何时make old
- innodb buffer pool管理--LRU调整
- innodb buffer pool管理--LRU插入
- innodb buffer pool管理--flush list
- innodb buffer pool管理--free list
- Innodb buffer pool struct
- The InnoDB Buffer Pool
- innodb buffer pool
- InnoDB Buffer Pool 说明
- innodb buffer pool
- innodb buffer pool管理--数据页的访问
- 14.3.3 InnoDB Buffer Pool Configuration InnoDB Buffer Pool 配置:
- 快速预热innodb buffer pool
- [置顶]Innodb Buffer Pool内部结构
- 8.10.1 The InnoDB Buffer Pool
- 8.10.1 The InnoDB Buffer Pool
- 14.4.3.1 The InnoDB Buffer Pool
- 史上最简单的SpringCloud教程 | 第十一篇: docker部署spring cloud项目
- PCA的数学原理
- 一级指针
- Multi-Programming-5 Thread Pools
- 环信SDK 踩坑记webIM篇(三)
- innodb buffer pool管理--LRU old何时make young
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)
- 内容提供者
- (二叉树是否相同或者堆成)LeetCode#100. Same Tree #101. Symmetric Tree
- 基于VC6.0恶搞小程序
- 斐波那契数列相关
- Hibernate绑定session以及api的使用
- 左值和右值
- Netty5入门学习笔记001