oracle-sga-buffer_cache

本文介绍了数据库中的概念块、段区和buffercache的工作原理,强调了buffercache命中率的重要性,讨论了内存组织结构如CBC链和LRU策略,还涉及buffer状态、buffercache大小调整以及利用SQL分析buffercache使用情况和热块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 段区块的概念
块block是最小的单位,类似于别的数据库的page,页
一个表就是一个段
区是给段分配的最小单位
区就是物理上连续的块,一般是8个
例:建立表t1,段就有了,先分配一个区,如果第一个区满了,再分配。

2 buffer cathe
dbf中,一个叫一个block,sga的buffer cache中,一个叫一个buffer。
意义:缓存dbf文件。构造cr块(undo)
buffer cathe的命中率很重要
内存读–逻辑io
硬盘读–物理io

3 buffer cathe内存组织结构
chain 双向链,不同的链

在这里插入图片描述
注意:链里面放的是地址,指向buffer,而不是链里面直接有数据。

CBC链cache buffer chain
根据block地址找bolck的时候,需要使用CBC链
按照地址将不同的buffer链起来
LRU链
最近最少使用
链的是free和clean块
LRUW,链的是脏块,目的是DBWN根据这个链工作
在这里插入图片描述
checkpoint queue 链
按照脏块被脏时间排序

3 buffer cache大小的设置及依据
修改dbwt进程数
在这里插入图片描述
buffer cache大小的设置
在这里插入图片描述
如果想手动增加buffer cache大小,首先增加sga_max_size,再增加sga_target大小,最后增加db_cache_size大小。

4buffer的状态
在这里插入图片描述
在这里插入图片描述

如果一个buffer中有未提交的事务,再读的话,就在新的buffer读,结合undo的数据,这个新的buffer叫cr。如果没有,这个buffer叫cur,即current。
如果在非集群模式下,current永远是x,如果是集群,就是s,即share。
READ:
block向buffer写入的时候的状态

5 使用不同sql了解buffercache
在这里插入图片描述
在这里插入图片描述
去掉distinct
在这里插入图片描述
查看在内存中的状态
在这里插入图片描述
所有对象在buffercache的占用情况
在这里插入图片描述
寻找热快
对于一个buffer,没发生一次逻辑io,就增加一次touch次数
touch属性越大,buffer越热,就在LRU的远端
在这里插入图片描述
通过上面的,可以锁定对象
在这里插入图片描述
统计数据文件的block的总和
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
io命令
在这里插入图片描述
在这里插入图片描述
rowid
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值