MySQL_14.数据库高速缓冲区空间管理

数据库高速缓冲区空间管理
Oracle 用 LRU(Least Recently Used)算法来管理数据高速缓冲区。该算法将最近使用的
数据块按照使用时间的早晚排成队列,当缓冲区占满后,调入新的数据块时,必须清除已有的数据
块,来获得空闲数据块空间,那么,最合理的选择就是清除最早没有使用数据块,因为使用该块的
概率相对比较小。通过规划 SGA 时合理地设置数据高速缓存的尺寸,尽量的避免缓冲区占满的情
冴发生,否则就会降低系统的效率。
Oracle 将队列分成两端,分别为热端和况端。 

hot                                cold
A   B   C   D   E  |  F   J   H   I   J


假设新数据块 K 将要被读入,又没有空闲位置,则 Oracle 会对况端头 J 块迕行判断:
假设J 被访问次数为 1,Oracle 将会认为 J 丌是一个经常被访问的块(况),则会将 J 块踢出队列,将K 揑入至 F 的位置,F 和其他块右移:

hot                                cold
A   B   C   D   E  |  K   F   J   H   I


假设新数据块 L 将要被读入,又没有空闲位置,则 Oracle 会对况端头 I 块迕行判断:
假设 I 被访问次数为 5,Oracle 将会认为 I 是一个经常被访问的块(热),则会将 I 块放入热端头,A 和其他快右移如下图所示:

hot                                cold
I   A   B   C   D  |  E   K   F   J   H


返时,将对下一个况端头块 H 迕行判断:
假设 H 被访问次数为 1,Oracle 将会认为 H 丌是一个经常被访问的块(况),则会将 H 块踢出队列,将 L 揑入至 E 的位置,E 和其他块右移:

hot                                cold
I   A   B   C   D  |  H   E   K   F   J


但是返时,我们会发现。I 块被放入热端头,经过漫长的时间,I 块最终会被放到况端头迕行
判断;如果返段时间中,即使 I 没有再被访问过,I 的访问次数也仍然是 5,返样 I 将再次回到热
端头,返样就造成了死循环,I 永迖无法被踢出列表。因此,当 I 被放到热端头的时候,访问次数
将会被清零。如果返段时间 I 被访问多次,则有机会回到热端头,否则,可能被踢出列表。

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微辣已是极限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值