Shared pool和library cache latch

栏目: 数据库 · Oracle · 发布时间: 5年前

内容简介:Shared pool latch用来保护共享池内部结构,在分配和释放共享池时需要获得latch,在老化或释放空间时也需要 latch。Oracle9i之前,共享池内存结构是由单独的Shared pool latch保护,从9i开始,如果服务器有4个以上的cpu且shared_pool_size大于250M,Oracle会动态将共享池分为多个子池,最多可以达到7个sub pool。子池的数量也可以通过_kghdsidx_count参数来手动调整,每个子池有自己的结构,lru列表和shared pool la

Shared pool latch用来保护共享池内部结构,在分配和释放共享池时需要获得latch,在老化或释放空间时也需要 latch。Oracle9i之前,共享池内存结构是由单独的Shared pool latch保护,从9i开始,如果服务器有4个以上的cpu且shared_pool_size大于250M,Oracle会动态将共享池分为多个子池,最多可以达到7个sub pool。子池的数量也可以通过_kghdsidx_count参数来手动调整,每个子池有自己的结构,lru列表和shared pool latch。

查看Shared pool latch个数

KSPPINM KSPPSTVL

----------------------------

_kghdsidx_count 2

SQL> select name,addr, child#, gets, misses from v$latch_children where name = \'shared pool\';

NAME ADDR CHILD# GETS MISSES

-------------------------- ---------------- ---------- ---------- -

shared pool 070000000006D8E0 7 0 0

shared pool 070000000006D7E8 6 0 0

shared pool 070000000006D6F0 5 0 0

shared pool 070000000006D5F8 4 0 0

shared pool 070000000006D500 3 0 0

shared pool 070000000006D408 2 3477094 796

shared pool 070000000006D310 1 3599730 387

7 rows selected.

Oracle9i之前,过大的共享池会增加Shared pool latch的争用,因为共享池中的空闲内存被分类,并保存在大量的存储桶或空闲列表上,较大的共享池趋向于较长的空闲列表,进程在获得共享池内存池之前,需要持有latch扫描很长的空闲列表,这在高度并发的系统中可能会生产 latch争用,特别是一些不使用绑定变量的系统。

Library cache latch用来保护库高速缓存内部结构,Oracle进程在库高速缓存中修改,检查,锁定,加载或执行对象时都需要先获得latch,latch的数量通常大于cpu_count的最小质数。可以通过_kgl_latch_count参数进行手动更改。

查看Library cache latch的个数

COUNT(*)

----------

11

Library cache latch争用通常出现在具有高版本数的 sql 语句中,这些sql的表面字义是相同的如select * from test,但可能属于不同的底层如schema,因为这些sql具有相同的散列值和不同的版本,oracle需要去比较该语句和现有版本,这期间需要一直持有latch的,这可能会造成其他进程无法获得 latch。

查看高版本的sql语句:

2 from v$sqlarea where version_count > 10 order by version_count desc;

SUBSTR(SQL_TEXT,1,40) VERSION_COUNT

-------------------------------------

insert into AUCTION_SYSTEMLOG ( 172

update smon_scn_time set orig_thread=0, 90

总的来说,shared pool和library cache争用主要出现在频繁的硬解析上,而过多的硬解析通常又和绑定变量存在关系,说了半天还是回到应用上,共享池的健壮性主要还是取决于应用的设计,而不不仅仅是参数的调整。

觉得文章有用?立即:和朋友一起 共学习 共进步!

建议继续学习:

  1. DBA手记:共享池的改进与ORA-04031的变化    (阅读:1320)

QQ技术交流群:445447336,欢迎加入!

扫一扫订阅我的微信号:IT技术博客大学习


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UNIX编程艺术

UNIX编程艺术

Eric S. Raymond / 姜宏、何源、蔡晓俊 / 电子工业出版社 / 2011-1 / 69.00元

本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。一起来看看 《UNIX编程艺术》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试