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

2023-12-20 06:38:52

数据库高速缓冲区空间管理
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 被访问多次,则有机会回到热端头,否则,可能被踢出列表。

文章来源:https://blog.csdn.net/mmmmm168m/article/details/135082708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。