Archive

Posts Tagged ‘latch’

Shared pool和Library cache latch

January 8th, 2008 8 comments

说点简单的,我说说共享池里面的两个latch

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

Categories: 数据库 Tags: , ,

Shared Pool体系结构进化论

January 7th, 2008 10 comments

在ORACLE 7之前的版本,连接oracle的每一个会话都有一个服务器进程为它服务,这个服务器进程的作用是解析(parse),优化(opimize)客户端提交的PL/SQL或SQL代码.就算客户端向各个服务器进程提交的PL/SQL,SQL代码一样,各个服务器进程并不会share cursor,刚开始采用这种设计方式也并没有什么性能问题。但随着客户端数量的高速增长,以及在OLTP SQL语句执行频率高速增长的情况下,ORACLE 7版本的数据库的这种设计就开始出现了性能问题。当执行一样的SQL或PL/SQL代码时,如果执行计划或其它一些信息可以被所有的服务器进程所共享,而不用重新去产生,那么将可以节约大量的时间。当时oracle已开始意识到此问题,并开始着手进行改进,采用了如下的方法:
1.扩展SGA variable portion
2.提供一种方法来管理和访问SGA variable portion中的shared objects
3.ORACLE内存管理的增强

Read more…

Categories: 数据库 Tags: , , ,