Performance Tuning Guide

文中注释处以符号"*"加章节数字标记,具体在章节最后统一详细说明。

 

chapter 6  Automatic performance diagnostics

 

Sql语句中尽量不要直接使用具体变量值进行操作,否则这些sql语句将不被其他用户共享,这样将导致增加额外的并且很耗费数据库时间的硬解析(*6-1)。例如,查询语句类似下面

select * from employees

where last_name like 'king';

实际上,较好的做法是将查询条件进行变量绑定,例如上面语句经过修改后,如下

select * from employees

where last_name like :1;

:1代表绑定的变量,在sql语句执行时,输入具体的值

如果应用程序中出现类似问题,而程序代码无法修改时,可以采取另外一个办法,设置数据库的CURSOR_SHARING变量的值为“force”

 

注释

6-1:硬解析(hard parse) 2010-04-12

执行某条sql语句时,首先计算此条语句的哈希值,接着在共享池(share pool)的库缓存(library cache)中查找与此哈希值匹配的语句

如果未找到对应的匹配语句,将解析此条语句,并将此语句放入库缓存中共享以被再次调用,这个过程即为硬解析。参照上面所说的sql语句绑定变量就是一种减少硬解析,增加共享池重复利用率的办法。

当然,如果上面在库缓存中找到与sql语句哈希值匹配的信息时,接着,再用此条sql语句与共享池中的语句进行逐个字符的比对,包括空格,

大小写,注释等,例如,下面三条sql语句使用的是不同的共享区域:

SELECT * FROM employees;
SELECT * FROM Employees;(字母E)
SELECT *  FROM employees;(比第一条多一个空格)

那么同样作用的3条语句,2条都是冗余的,具体可以查询视图V$SQL_SHARED_CURSOR,进行统计测试。因此,将sql语句最后统一转换为大写是个好办法。

 

chapter 7 Memory Configuration and Use

SGA

1.将SGA_TARGET 初始化变量设置为一个为非零值,并且将STATISTICS_LEVEL变量设置为“TYPICAL”或者“ALL”,使ADDM更有效的工作。

2.在共享服务器模式(shared server)下,为了获取更好的排序性能,可以将变量SORT_AREA_SIZE与SORT_AREA_RETAINED_SIZE设置为相同的值,这样,排序结果将保留在大型池中(large pool)而不是写入硬盘。

3.SGA共享池(shared pool)内存架构采用LRU算法管理,而大型池(large pool)没有LRU列表。

4.大型池的使用

以下三种情况考虑使用大型池(large pool):

a:并行查询(parallel query)

b:恢复管理(recovery manager)

c:共享服务器模式(shared server)

大型池(large pool)更多内容见http://blog.csdn.net/battlehawk/archive/2010/04/13/5482996.aspx

5.如果系统没有库缓存读取丢失(library cache misses),可以通过将初始化变量CURSOR_SPACE_FOR_TIME设置为true来加快sql语句的执行调用。如果sql语句在执行调用时出现库缓存丢失现象,那么这个库缓存丢失表明共享池不够大。

6.缓存会话游标(caching session cursors)。

通过ALTER SESSION SET SESSION_CACHED_CURSORS = value ;设定,其中value变量为正整数。

通过SELECT * FROM V$SYSSTAT WHERE NAME LIKE 'session cursor%'语句查询会话游标缓存的命中率,如果命中率较低时,考虑增大这个缓存大小。

7.设置Reserved pool

内存性能指标的查看,及参数设置方法具体见:http://blog.csdn.net/battlehawk/archive/2010/04/18/5498787.aspx

8.重做日志缓存调优。

以下任一情形为真时,LGWR都会将日志缓存中的日志条目拷贝至联机日志文件中:

一、日志缓存满三分之一时。二、服务器进程执行提交或回滚命令。三、DBWR让LGWR这样做

调优方式:

一、增大LOG_BUFFER。二、改进检测点(checkpointing)或者存档进程。三、改进写日志的性能(也许可以使用将联机日志转移至裸设备环境)。四、批量提交任务。五、装载大数据量时使用NOLOGGING操作

PGA

具体链接:http://blog.csdn.net/battlehawk/archive/2010/04/16/5493346.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值