Oracle知识整理《DBA的思想天空》

1 DB Cache 是以bock为单位组织的缓冲区,不同大小的BLOCK对应不同的缓冲区参数

2 DB Cache的命中率越高,访问性能就越好

3 Cache中的数据块通过散列算法实现

4 每个链上的buffers数量,最佳的情况是每个链上只有一个buffer

5 DBWR进程控制脏数据写入

6 在DB Cache,同一个数据块中可能存在多个版本的数据

7 大表的扫描,热块冲突都可能导致闩锁的争用

 

引入tch计数器,避免LRU链上频繁移动

 

LRU链上搜索达到最大深、LRU-W上没有足够的clean buffers都会触发标记位,使得DBWR进程讲脏数据写入磁盘

 

几个重要的数据链:

1 LRU list普通的LRU链

2 LRU-AUX list 被确认的clean的链,包括DBWR已经写回文件的 数据块和干净快

3 LRU-XO list 重用对象链

4 LRU-XR list CKPT搜索这些BUFFER,将脏数据写入该链,再由DBWR写入磁盘

 

闩锁争用:

1 热块冲突

2 数据库在某个时间段出现大量的数据块扫描、热链

 

使用keep pool存放大表,可以降低物理读,改善cache命中率

 

使用owi观点和时间模型分析,帮助分析数据库性能

 

DB cache命中率低,意味着更多的物理IO、更多的闩锁使用、较低的效率。RAC中,更多的实例间通信消息

 

DB cache调优,注意 free buffere waits \ writes complete waits两个性能指标

 

SGA包括:

1 数据结构部分 fixed size 

2 数据块缓冲区 database buffers

3 redo log缓冲区 redo buffers

4 共享池 variable size

 

永久使用的共享内存:进程信息数据、会话信息数据、特殊用途的内存段

 

随着共享池碎片化加剧:产生ORA-4031错误

1 加大初始的分配值

2 每次扩展一个组

 

共享池内部结构:

1 PERMANENT

2 FREEABLE

3 RECERATEABLE

4 FREEABLE WITH MARK

 

通过内部视图 X$KSMSP监控共享池碎片的情况

 

较大的共享池会带来一定的系统开销

共享池闩锁竞争也会增加

定期刷新共享池会有助于保持共享池性能的稳定

 

共享池相关闩锁的平均等待时间、超时的次数---判断共享池碎片化程度

 

游标:一个父游标,多个子游标

 

用户的不同,通过一个SQL得到的结果就不同,因此不能共享;执行计划不同,也不可以共享

 

硬解析:执行SQL时,SQL已经不再共享池中,会产生硬解析。首先分配共享池空间,创建父游标,创建子游标

软软解析:父游标存在,子游标也存在

软解析:父游标存在,子游标不可共享

 

游标共享技术ACS

 

游标不会马上关闭,会先放在游标缓存中,等待回话完成后,在关闭

 

OPEN_CURSORS会话打开的游标数量

SESSION_CACHED_CURSORS回话缓冲,主要功能:将会话中的常用的SQL放入UGA中的会话缓冲区中,以便下次调用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2fe87fdb4f1ceab4f473b7ebe97d90b1.html