【每日一摩斯】-Shared Pool优化和Library Cache Latch冲突优化 (1523934.1)-系列5

简介: Flushing(清空) SHARED POOL       在使用大量literal SQL的系统中,shared pool随时间推移会产生大量碎片进而导致并发能力的下降。

Flushing(清空) SHARED POOL

       在使用大量literal SQL的系统中,shared pool随时间推移会产生大量碎片进而导致并发能力的下降。Flushing shared pool能够使得很多小块碎片合并,所以经常能够在一段时间内恢复系统的性能。清空之后可能也会产生短暂的性能下降(补充:因为需要做第一次的硬解析),因为这个操作同时也会把没造成shared pool碎片的共享SQL也清除了。清空shared pool的命令是:

ALTER SYSTEM FLUSH SHARED_POOL;(补充:不支持SESSION级别的)

注意:如果显式的使用以上命令,即使是用DBMS_SHARED_POOL.KEEP而被保留的那些对象可能也会被释放掉,包括它们占用的内存。如果是隐式的flush(由于shared pool上的内存压力)这个时候“kept"的对象不会被释放。
注意:如果sequence使用了cache选项,冲刷shared pool有可能会使sequence在其范围内产生不连续的记录。
使用DBMS_SHARED_POOL.KEEP('sequence_name','Q')来保持sequence会防止这种不连续的情况发生。

DBMS_SHARED_POOL.PURGE
       也可以不刷新整个shared pool,而只清空其中的单个对象。下面的文档说明了10g和11g中如何清空library cache heap。
Document:751876.1
DBMS_SHARED_POOL.PURGE Is Not Working On 10.2.0.4

使用 V$ 视图 (V$SQL 和 V$SQLAREA)
       注意有一些V$视图需要获取相关的latch来返回查询的数据。用来展示library cache和SQL area的视图就是值得注意的。所以我们建议有选择性的运行那些需要访问这种类型视图的语句。特别需要指出的是,查询V$SQLAREA会在library cache latch上产生大量的负载,所以一般可以使用对latch访问比较少的v$sql做替代——这是因为V$SQLAREA的输出是基于shared pool中所有语句的GROUP BY操作,而V$SQL没有用GROUP BY操作

MTS, Shared Server 和 XA

       由于多线程服务器(MTS)的User Global Area (UGA)是存放在shared pool中的,所以会增加shared pool的负载。在Oracle7上的XA session也会产生同样的问题,因为他们的UGA也是在shared pool里面(在Oracle8/8i开始XA session不再把UGA放到shared pool中)。在Oracle8中Large Pool可以被用来减少MTS对shared pool活动的影响——但是,Large Pool中的内存分配仍然会使用"shared pool latch"

       使用dedicate connections(专有连接)替代MTS可以使UGA在进程私有内存中分配而不是shared pool。私有内存分配不会使用"shared pool latch",所以在有些情况下从MTS切换到专有连接可以帮助减少竞争。

       在Oracle9i中,MTS被改名为"Shared Server"。但是对于shared pool产生影响的行为从根本上说还是一样的。 

目录
相关文章
|
缓存 前端开发 rax
x86系统cache locking的原理
x86系统cache locking的原理
235 0
|
SQL Oracle 关系型数据库
0821Cache Buffers chains与共享模式疑问4
[20170821]Cache Buffers chains与共享模式疑问4.txt --//昨天别人问的问题,就是在读读模式下,访问相同数据块,11.2.0.4不再出现cache buffers chains latch等待事件.
1160 0
|
SQL 关系型数据库 测试技术
缓解latch: cache buffers chains的案例
这两天我们的一个核心系统U*S,正在做压力测试,虽然压测的服务器配置不如生产,但可以反映出一些问题,初始测试的TPS可以说非常低,据测试同事反映,压测一会,数据库服务器CPU就上来了,业务上有积报现象,找不着原因。
1765 0
shared pool latch和library cache latch
shared pool latch和library cache latch    >                                   >          ...
889 0
|
关系型数据库 Oracle Linux
1104Cache Buffers chains与共享模式疑问4
[20151104]Cache Buffers chains与共享模式疑问4.txt http://blog.itpub.net/267265/viewspace-1822491/ SCOTT@book> @ &r/ver1 PORT_STRING      ...
835 0
1104Cache Buffers chains与共享模式疑问3
[20151104]Cache Buffers chains与共享模式疑问3.txt --今天itpub上讨论vage讲11.2.0.4读读模式不会出现cache buffers chains latch,好奇做一个测试: --链接如下:http://www.
752 0