ORACLE (4): buffer cache(1-基础机构)

Oracle的Buffer Cache是数据库缓存机制的核心部分,用于减少I/O操作并提供读一致性。它包括Buffer Header、Buffer Bucket和Buffer Chain等结构,通过LRU算法管理缓冲区。Buffer Header包含数据块地址(DBA)和缓冲区地址(BA),Buffer Bucket是一种按表空间、文件号和块号组织的内存结构。Buffer Cache通过CBC Latch和Hash Bucket实现高效的并发访问控制。
摘要由CSDN通过智能技术生成
什么是buffer cache(buffer cache 结构

buffer:是将block拷贝到内存上面,和block一一对应
buffer header:描述buffer的结构,状态,使用情况等,每个buffer都有一个buffer head 包含:dba(data block address)| BA (buffer address)
buffer bucket:是一种维护一组buffer header,有相关联的表空间,文件号,块号的内存结构
(属于 shared pool)
buffer chain:是一种有关系的buffer header的列表
LRU:用来描述或者说指定如何去去空闲的buffer

RBA(redo byte address):sequence number+block number+ offset

buffer cache的作用

a.减少I/O
b.通过构造CR块,从而提供读一致性功能。
c.通过提供各种lock、latch机制,从而提供多个进程并发访问同一个数据块的功能

总体结构:

在这里插入图片描述
其中
Latch ,hash bucket 属于 shared pool
buffer header buffer 属于 buffer cache,(x$bh)

BH的结构:

在这里插入图片描述

对应的内部表:

SQL> desc  X$BH
 Name					   Null?    Type
 ----------------------------------------- -------- ----------------------------
 ADDR						    RAW(8)
 INDX						    NUMBER
 INST_ID					    NUMBER
 HLADDR 					    RAW(8)   --latch的内存地址
 BLSIZ						    NUMBER
 NXT_HASH					    RAW(8)  --hash 链表
 PRV_HASH					    RAW(8)   --hash 链表
 NXT_REPL					    RAW(8)
 PRV_REPL					    RAW(8)
 FLAG						    NUMBER
 FLAG2						    NUMBER
 LOBID						    NUMBER
 RFLAG						    NUMBER
 SFLAG						    NUMBER
 LRU_FLAG					    NUMBER
 TS#						    NUMBER     --表空间
 FILE#						    NUMBER     --文件号
 DBARFIL					    NUMBER   
 DBABLK 					    NUMBER
 CLASS						    NUMBER
 STATE						    NUMB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值