数据库调优小记

应用上线一段时间以后,用户反映下载数据很慢。(实际观察了下,的确是慢的让人无法忍受)

同事告诉我,晚间重启下就会好很多。

应用环境

数据库

操作系统

数据库调优小记_第1张图片

按照常规手段,先查询一下alert_$ORACLE_SID.log,并没有发现异常。

在故障点时,通过 select * from v$session_wait,发现direct path read temp等待事件

通过SID找到,执行的SQL。

select * from v$sqltext c
where c.HASH_VALUE in
(
select a.SQL_HASH_VALUE from v$session a ,v$session_wait b
where a.sid=b.sid 
)
order by piece

找应用的程序员一起来分析了下SQL,从执行计划上来看没有太多可以优化的地方。

select * from v$sql_plan c
where c.HASH_VALUE in
(
select a.SQL_HASH_VALUE from v$session a ,v$session_wait b
where a.sid=b.sid 
)

问题是处在被查询的表,这张表积累了一年的交易,大约4千万条数据。

用户每次提交一个批量查询文本,需要查询每个商户近90天的交易。一般查询15-30次,然后从页面下载一个保存了查询结果的Excel。

经过协商,新建一张新表仅仅保存最近90天的数据用于此功能的查询。

但是,这项改动,没有那么快实现。用户要求,尽快改善这种情况。

遇到direct path read temp等待事件,一般是通过增加PGA,来解决。

show parameter pga

pga_aggregate_target = 768MB

要增加这个参数,增加多大合适呢? 可以通过查询v$process来查看

select a.pid,b.SID,a.PGA_USED_MEM,a.PGA_ALLOC_MEM,a.PGA_FREEABLE_MEM,a.PGA_MAX_MEM 
from v$process a ,v$session b
where a.ADDR=b.PADDR and a.sid=?

我先增加到2G,发现PGA_USED_MEM很快就占满了,于是再增加到4G,发现问题已经得到缓解。

数据库版本也有点低,计划升级到10.2.0.5.0

你可能感兴趣的:(数据库调优小记)