Shared Pool的一点理解
来源:互联网 发布:mac ai如何剪切图片 编辑:程序博客网 时间:2024/04/30 02:58
Shared Pool的Free list管理
Shared Pool通过Free list管理free内存块(Free chunk),根据Free chunk的大小,被划分到不同的Bucket中进行管理。关于Shared Pool中有多少个Bucket和每个Bucket中管理多大的Free chunk可以通过设置event来查看。
alter session set events 'immediate trace name heapdump level 2'
9i之前和9i及以后的Bucket管理的free chunk的大小范围有较大改变,所以9i及以后设置较大的Shared Pool,会增加更多的Bucket来管理大量的free chunk,使每个Bucket管理的free chunk数量变少,提高了查找效率,这样就减少了查找free chunk是持有Shared Pool Latch的时间。同时在9i之前,只有一个Shared Pool Latch,到9i及以后,最多可以有7个Shared Pool Latch。如果机器至少有4个cpu和Shared Pool大于250m,可以把Shared Pool划分为多个subpool,每个subpool都有自己的结构,LRU和Shared Pool Latch.
subpool的数量由参数_kghdsidx_count控制。
查找当前拥有的Shared Pool Latch的数量:
select addr, name, gets, misses, waiters_wokenfrom v$latch_children where name = 'shared pool';
ADDR NAME GETS MISSES WAITERS_WOKEN
---------------- ------------- ----------- ---------- -------------
C00000004C5B06B0 shared pool 0 0 0
C00000004C5B0590 shared pool 0 0 0
C00000004C5B0470 shared pool 0 0 0
C00000004C5B0350 shared pool 0 0 0
C00000004C5B0230 shared pool 0 0 0
C00000004C5B0110 shared pool 1385021389 90748637 12734879
C00000004C5AFFF0 shared pool 2138031345 413319249 44738488
Shared Pool的空间分配和使用情况,可以通过查询x$ksmsp(Kernal Storage Memory Management SGA Heap),每一行代表一个chunk.
SQL> desc x$ksmsp;
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDR RAW(4)
INDX NUMBER
INST_ID NUMBER
KSMCHIDX NUMBER
KSMCHDUR NUMBER
KSMCHCOM VARCHAR2(16)
KSMCHPTR RAW(4)
KSMCHSIZ NUMBER
KSMCHCLS VARCHAR2(8)
KSMCHTYP NUMBER
KSMCHPAR RAW(4)
主要字段的解释:
KSMCHCOM--注释字段,每个chunk被分配,注释会添加在这个字段。
KSMCHSIZ--chunk的大小。
KSMCHCLS--代表类型,主要有4类:
1.free--空闲chunk,可以被分配。
2.recr--Recreatable Chunks,包含可以被临时移出内存的对象,在需要时这个对象可以被重建。例如,许多存储共享sql代码的内存都可以重建。
3.freeabl--Freeable Chunks,包含session周期或调用的对象,随后可以被释放,这部分内存有时候可以全部或部分提前释放,但是注意,由于某些对象是中间过程产生的,这些对象不能临时被移出内存(因为不可重建)。
4.perm--Permanent Memory Chunks,包含永久对象,通常不能独立释放。
shared_pool_reserved_size和shared_pool_reserved_min_alloc参数
shared_pool_reserved_size用于指定保留的shared pool空间,用于满足大的连续的空间请求。
shared_pool_reserved_min_alloc用于指定当大的连续的空间请求的大小大于等于参数值时但又在shared pool中找不到合适的空间,就在shared_pool_reserved_size中分配。
- Shared Pool的一点理解
- 理解Shared Pool 1
- 理解Shared Pool 2
- Shared Pool 的学习!
- shared pool的优化
- shared pool的优化
- SHARED POOL的优化思路
- Shared pool的组成结构
- Shared pool
- 关于shared pool的深入探讨(一)
- 关于shared pool的深入探讨(二)
- 关于shared pool的深入探讨(三)
- 关于shared pool的深入探讨(四)
- 关于shared pool的深入探讨(五)
- 关于shared pool的深入探讨(六)
- 关于shared pool的深入探讨(一)
- 关于shared pool的深入探讨(二)
- oracle优化中的Shared pool的优化
- 关于同操作系统的32bit到64bit的数据库迁移参考文档
- rebuild和rebuild online的区别
- Some hint
- 一条SQL语句如何被解析
- 关于CURSOR_SHARING三个取值的区别
- Shared Pool的一点理解
- [用友]年度结转
- 能否再给爱一次机会
- ASP.NET 的自定义控件>显示继承控件图形的问题
- library cache lock wait event
- 关于存储过程的ADO调用的一些心得(输出参数,返回值)
- create index时对表加的什么锁
- Oracle DBA值得去读的书
- 普鲁斯特问卷的26个问题