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 被访问多次,则有机会回到热端头,否则,可能被踢出列表。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!