MySQL数据页访问流程

数据页访问流程

1)当访问的页面在缓冲池中命中,直接返回该页。为了避免扫描LRU,innodb为每个instances维护了一个page hash,通过space id (表空间id)和 page no(当前页) 可以直接找到对应的page。一般情况下,当你需要读入一个page时,首先找到对应的instances,然后再查询 page hash,如果page hash 中没有,则需要从磁盘中读取;

2)如果没有命中,则需要把页面从磁盘加载到缓存,因此需要在缓存中找一个空闲的内存块来缓存这个页面;

3)如果空闲的内存块被使用完,也就是free 链表上没有内存块了。则需要在生产一个空闲的内存块;

4)首先去LRU列表中找到可以替换的内存页面,查找的方向时从尾部开始,如果找到可以替换的页面,将其从LRU列表摘除,加入空闲列表,然后再去空闲列表中找到空闲的内存块;

5)如果在LRU中没有找到可替换的页,则进行单页刷新,将脏页刷新到磁盘之后,再将释放的内存块加入到空闲列表,然后再去空闲列表去取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值