视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle学习之--BufferCache深入解析
2020-11-09 12:33:11 责编:小采
文档


Oracle 学习之--Buffer Cache深入解析 服务器进程和数据库缓冲区高速缓存: 当服务器需要块时,需要按系列步骤读取块: 1、首

Oracle 学习之--Buffer Cache深入解析

服务器进程和数据库缓冲区高速缓存:

当服务器需要块时,需要按系列步骤读取块:

1、首先,服务器使用散列函数检查是否可以从缓冲区高速缓存中获得所需要的块。如果找到缓冲区,则将它移动到LRU列表中远离LRU末尾的另一端。这是逻辑读取,因为没有发生实际的I/O。如果在缓冲区高速缓存中找不到缓冲区,则服务器进程(Server)必须从数据文件中读取。


2、对数据文件进行读取之前,服务器进程将搜索LRU列表,以获得空闲的缓冲区。所有被服务器进程修改的缓冲区都放在检查点队列中。以便在检查点期间写出到磁盘。

3、如果检查点的大小超出了其阈值,服务器会发出信号通知DBWn刷新数据缓冲区高速缓存中的脏数据缓冲区。如果服务器在搜索阈值内找不到空闲的缓冲区,将发出信号通知DBWn进行刷新。

4、找到空闲缓冲区后,,服务器将块从数据文件中读入到数据库缓冲区高速缓存中过的空闲缓冲区。Oracle服务器进程把缓冲区移动到LRU列表中远离LRU末尾的位置。

5、如果对块的读取不一致,服务器会由当前块和回滚段重建块的早期版本。

Oracle 如何强制刷新Buffer Cache

Buffer cache和page cache的区别

Linux中Buffer cache性能问题一探究竟

Oracle BUFFER CACHE研究

Oracle Buffer Cache优化思路 与

DBWn进程和数据库缓冲区高速缓存:

DBWn将脏数据块写入数据文件,以确保服务器有空闲块,并以此来管理缓冲区高速缓存。DBWn响应实例中不同的事件:

1、Checkpoint Queue Exceeds Threshold:如果服务器进程发现检查点队列的大小超出其阈值,就会发出信号通知DBWn进行刷新。DBWn则将检查点队列中的缓冲区全部写出。

当检查点队列25%满就会触发DBWn的写操作:

SQL> desc x$kvit

Name Null? Type

----------------------------------------- -------- ----------------------------

ADDR RAW(8)

INDX NUMBER

INST_ID NUMBER

KVITVAL NUMBER

KVITTAG VARCHAR2()

KVITDSC VARCHAR2()

SQL> col KVITTAG for a20

SQL> col KVITDSC for a50

SQL> set linesize 120

SQL> select KVITTAG,KVITVAL,KVITDSC,INST_ID from x$kvit where KVITTAG='kcbldq';

KVITTAG KVITVAL KVITDSC INST_ID

-------------------- ---------- -------------------------------------------------- ------

kcbldq 25 large dirty queue if kcbclw reaches this 1

更多详情见请继续阅读下一页的精彩内容:

下载本文
显示全文
专题