继昨天使用DB time能够快速灵活的定位sql语句之后,发现分析问题更快捷,高效了。今天就牛刀小试,把一个数据库从500%的负载调到不到100%的负载。前提是确实有可提升可改进的空间。

ZABBIX-监控系统: 5

对于OLAP目前设定的阀值是500%,相对来说是一个较高的阀值了。来分析一下看看是否由于sql的影响较大。8tmf11fvxy09j这个语句。这个语句一个快照时间范围内执行了近30次,每次执行大概是80秒左右。发现这个语句是一个看似简单的查询。SQL Plan Monitoring Details (Plan Hash Value=2129377450)

Id Operation Name Estimated Cost Execs Rows
Rows
. 0 SELECT STATEMENT . . . 1 .
. 1 . SORT AGGREGATE . 1 13 1 .
-> 2 .. HASH GROUP BY . 1 13 1 0
-> 3 ... PARTITION RANGE ITERATOR . 1 12 1 3
-> 4 .... TABLE ACCESS BY LOCAL INDEX ROWID TES_BILLDETAIL 1 12 5 3
-> 5 ..... INDEX RANGE SCAN IND_TES_BILLDETAIL
_END_TIME
49 1 5 9M

绑定变量值也能抓取到。


Name Position Type Value
:1 1 VARCHAR2(128) 582891946

带着疑问查看了下数据的情况,发现使用字段CN来过滤,只有1000多条记录,相比通过时间来过滤的900多万记录来说差别实在是太大了。EXPLAIN PLAN FOR SELECT /*+INDEX(TES_BILLDETAIL IND_TES_BILLDETAIL_CN)*/ROUND(AVG(SUM(END_TIME-START_TIME)*1440)) AVG FROM TES_BILLDETAIL WHERE END_TIME > TRUNC(SYSDATE - 30) AND CN = :1 GROUP BY TRUNC(END_TIME) 发现索引能够正常启用,而且cost也不高,就按照这个方子来试试。9h0kr4s3365mt就是我们努力的目标,使用提供的脚本来得到执行计划的profile信息。输入sql_id和hash_value即可。

基于DB time的调优分析 (r6笔记第79天)逻辑读的效果更加明显。

基于DB time的调优分析 (r6笔记第79天)

相关文章: