oracle性能分析

 
 
 
执行计划
 
 
 
 
 
 
通过查询v$sql来查看当前存放在库高速缓存中的语句。
select sql_text,sql_id,child_number,hash_value,address,exeutions from v$sql where upper(sql_text) like '%targetTable%'
 
视图合并
查询转换会把视图与sql语句一起优化,而不会单独优化。
不进行视图合并的情况:一个查询块包含解析函数,集合运算(Union,minus),order by子句,或者使用了rownum。
merge强制视图合并。
10版本以后,优化器复查决定是不使用视图合并
 
 
 
其中
4、.从V$SQLAREA中查询最占用资源的查询 
select b.username username,a.disk_reads reads, a.executions exec,
a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
a.sql_text Statement
from  v$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
and a.disk_reads > 100000
order by a.disk_reads desc; 
用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息。 

 

 V$SQL是内存共享SQL区域中已经解析的SQL语句。
该表在SQL性能查看操作中用的比较频繁的一张表,关于这个表的详细信息大家可以去http://apps.hi.baidu.com/share/detail/299920# 上学习,介绍得比较详细。我这里主要就将该表的常用几个操作简单介绍一下:
1、列出使用频率最高的5个查询: 
select sql_text,executions 
from (select sql_text,executions,
   rank() over 
(order by executions desc) exec_rank 
   from v$sql) 
where exec_rank <=5; 
该查询结果列出的是执行最频繁的5个SQL语句。对于这种实用非常频繁的SQL语句,我们需要对其进行持续的优化以达到最佳执行性能。
找出重点语句在sql developer中进行语句分析。
 
 
 

posted on 2019-07-10 11:28  来碗板面  阅读(205)  评论(0编辑  收藏  举报

导航