ORACLE 9208
v$sqlarea中 buffer_gets 和 disk_reads较高的一条SQL:
SELECT SNAME,CTYPE,CNUMBER FROM F_IND WHERE BUSINESSRE = :B1;
该语句在一循环中执行,循环记录数平均每天400万左右,F_IND表上唯一索引列为BUSINESSRE,记录数约为1700万;
问题:
1、为什么EXECUTIONS达到30355210次,V$SQLAREA中保留的是多久以来的数据,是否不只一天的执行次数? 如果用 DISK_READS/EXECUTIONS得到的平均值不是很大,是否代表不需要太关注这个SQL?
2、DISK_READS大,说明数据块不存在数据缓冲区中,缓冲数据应该是被其他程序冲掉了,单纯增大缓冲区大小应该没有用的,有没有办法使其不被冲掉?
3、BUFFER_GETS也大,说明SQL执行效率低?BUFFER_GETS/EXECUTIONS得到的平均值不是很大,是否也不需要太关注?
附件中是 V$SQLAREA的详细内容,请指教
[ 本帖最后由 dege 于 2009-2-24 17:23 编辑 ]
|