Oracle性能优化 之 库缓存命中率及等待事件(三)

2014-11-24 12:20:18 · 作者: · 浏览: 1
2339 2296

OBJECT 0 0 1 0 0

PIPE 0 0 1 0 0

JAVA SOURCE 0 0 1 0 0

JAVA RESOURCE 0 0 1 0 0

JAVA DATA 0 0 1 0 0

可以看在库缓存中共有11个名称空间,我们基本上可以说库缓存中有11种类型的信息。有一个非常重要的指标,就是库缓存命中率,这个命中率就是库缓存中所有对象的GETHITRAIO,它的计算方法如下:

select 1-sum(gethits)/sum(gets) from v$librarycache;

这个比率应该在90%以上。 还有一个比率也很重要,就是Reload和Pin的比值,这个比值应该小于1%。

如果没有达到这些比例,解决方法很简单,问题或者是SQL语句没有共享,或者是共享池太小。

有关库缓存命中率,也可以查看STATSPACK报告中的Library Hit %项。这个我们上面已经说过了。


三、Library cache lock、Library cache pin等待事件

我们再补充一点,SG中没提,我们在调优的课程中,有很多内容将不再按SG顺序讲。当然我们也会补充很多实践性比较强的内容。所以我们一定要多记才行。

等待事件在Oracle中无处不在,为了记录这些数据,是损失了一些性能。但是你是想出了问题一愁么展好,还是可以利用等待事件或各种资料轻松的查找出问题在哪好呢?而且,这些等待事件和资料你即使不去用它,Oracle一样会消耗CPU去记载它们。因此,一个好的DBA一定要对各种等待事件、资料了如指掌。下面,我们介绍两个和库缓存相关的等待事件,如题,就是Library cache lock和Library cache pin。

我们上面说到库缓存中的对象在库缓存中被切割成多个内存块,另有一个对象句柄记录了各个内存块的地址和其他的一些信息。当你要修改句柄中的信息时,需要在句柄上加独占锁,而如果另一个进程恰好在这时要求读、写句柄中的信息,它就必须等待。此时的等待就被Oracle记入Library cache lock事件。而读、写对象内存块也是无法同时进行的,有人如果正在写,你的读操作就必须等待,读写内存块的等待事件就是Library cache pin。如果这两个等待事件过多,同样说明了库缓存过小或没有共享执行计划。或者,当你在数据库繁忙时使用DDL时,也会有这两个等待事件。


四、库缓存视图

有一个视图可以看到缓存在库缓存中对象的信息,它是V$db_object_cache。

OWNER :对象所有者

NAME :对象名

DB_LINK:数据库链接名

NAMESPACE:名称空间。如果是SQL游标,它的名称空间是CURSOR。名称空间和类型的意义是差不多的。除了CURSOR外,还有TABLE、INDEX等等。

TYPE:类型

SHARABLE_MEM:所占用的内存

LOADS:对象被加载的次数

EXECUTIONS:对象被执行次数

LOCKS:正在锁定对象的会话数

PINS:正在Pin对象的会话数

KEPT:对象是否用DBMS_SHARED_POOL.KEEP保持在共享池中

CHILD_LATCH:对应的子闩

INVALIDATIONS:对象的无效次数


五、OLAP和OLTP的区别

我们上面所说的库缓存的调节适合于OLTP,但并不适合大部分的OLAP系统。什么是OLTP呢,它又叫联机事务处理。各种网站、BBS,或者银行的ATM机上的应用,银行前台电脑中的应用等等,这些都是OLTP型的应用。OLTP偏重于资料收集,但它不会对资料进行分析。OLAP,又叫联机应用程序,它主要指哪些根据以往资料进行分析、处理,查找规律或预测趋势的应用。像数据仓库和DSS(企业决策系统)或数据挖掘型的应用,都是OLAP型应用程序。例如,不知道我们听说过一个啤酒和尿裤的故事没有。(在此处补充此故事)在这个故事中,最后分析出啤酒和尿裤有关联的程序,就是一个OLAP应用。而沃尔玛超市的收银台中的应用,就是OLTP应用。OLTP收集资料,OLAP分析处理。

OLTP的并发会话数可能非常多,但都是执行短小的事务或查询,而且大多数语句都类似。因此,共享执行过的相似的语句,对OLTP是非常重要的。

而OLAP的并发会话可能很少,而且,以查询为主。因为OLAP的主要任务就是分析数据。但OLAP的查询往往需要执行很长时间。对于OLAP来说,共享语句的执行计划是没有必要的。因此,对于OLAP,共享池的大小可以尽量的小。

我们在讲到后面的内容时,会讲述更多OLTP和OLAP这二者的区别,和各种Oracle的特性分别是针对谁设计的。



本文出自 “叶绍琛” 博客