执行计划
通过查询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版本以后,优化器复查决定是不使用视图合并
java 数据库性能分析http://www.kuqin.com/shuoit/20160503/351829.html
其中
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中进行语句分析。