使用脚本查看oracle缓存的sql语句情况

本文介绍了一个SQL查询语句,用于获取特定SQL语句的执行情况,包括执行总次数及磁盘读取次数,并讨论了如何通过减少磁盘读取来提高SQL执行效率。此外,还提供了计算高速缓存区命中率的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select t.sql_id,t.executions_total,t.disk_reads_total,t.parse_calls_total,a.sql_text 
from sys.wrh$_sqlstat t,sys.wrh$_sqltext a 
where t.parsing_schema_name='WW_XRAPUSER' and  t.sql_id=a.sql_id;

 执行这个语句得到sql语句的缓存情况

 

如上面这张表中,他会反映某个特定Sql语句的执行信息。其中第一个参数Excutions_Total参数纪录了某条SQL语句总共执行的次数。而第二个参数Disk-Reads-Totali参数则统计了从磁盘中读取数据的次数。当SQL语句的执行次数特别多而且又是多次从磁盘中读取数据的话,那么数据库管理员就要注意了。因为从磁盘中读取数据要比从内存中读取数据慢的多。此时,若数据库管理员能够想方设法,让这些执行频率高的SQL语句不直接从磁盘中读取数据,而是从内存中读取数据,那么就可以非常有效的提高SQL语句的执行效率。

 

另附:

先用下面的公式计算高速缓存区的命中率:
1-(physical reads/(db block gets+consisten gets))
上面的数据由下面得到

select name,value from v$sysstat where name in('physical reads','db block gets','consistent gets');

 

如果命中率是0.90或更高,遇明是好的。如果过低就要增加db_block_buffers的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值