查詢oracle效能SQL
有很多種方法可以用來找出哪些SQL語句需要最佳化,但是很久以來,最簡單的方法都是分析儲存在V$SQL檢視中的快取的SQL資訊。透過V$SQL檢視,可以確定具有高消耗時間、CUP和IO讀取的SQL語句。
1.檢視總消耗時間最多的前10條SQL語句
select *
from (select v.sql_id,
v.child_number,
v.sql_text,
v.elapsed_time,
v.cpu_time,
v.disk_reads,
rank() over(order by v.elapsed_time desc) elapsed_rank
from v$sql v) a
where elapsed_rank <= 10;
2.檢視CPU消耗時間最多的前10條SQL語句
select *
from (select v.sql_id,
v.child_number,
v.sql_text,
v.elapsed_time,
v.cpu_time,
v.disk_reads,
rank() over(order by v.cpu_time desc) elapsed_rank
from v$sql v) a
where elapsed_rank <= 10;
3.檢視消耗磁碟讀取最多的前10條SQL語句
select *
from (select v.sql_id,
v.child_number,
v.sql_text,
v.elapsed_time,
v.cpu_time,
v.disk_reads,
rank() over(order by v.disk_reads desc) elapsed_rank
from v$sql v) a
where elapsed_rank <= 10;
4、檢視消耗記憶體多的sql
select b.username, a. buffer_gets, a.executions, a.disk_reads / decode(a.executions, 0, 1, a.executions), a.sql_text SQL from v$sqlarea a, dba_users b where a.parsing_user_id = b.user_id and a.disk_reads > 10000 order by disk_reads desc;
5、檢視邏輯讀多的SQL
select* from(select buffer_gets, sql_text from v$sqlarea where buffer_gets>500000 order by buffer_gets desc) where rownum<=30;
6、檢視執行次數多的SQL
select sql_text, executions from (select sql_text, executions from v$sqlarea order by executions desc) where rownum < 81;
7、檢視讀硬碟多的SQL
select sql_text, disk_reads from(select sql_text, disk_reads from v$sqlarea order by disk_reads desc) where rownum<21;
8、檢視排序多的SQL
select sql_text, sorts from(select sql_text, sorts from v$sqlarea order by sorts desc) where rownum<21;
9、分析的次數太多,執行的次數太少,要用綁變數的方法來寫sql
select substr(sql_text, 1, 80) "sql", count(*), sum(executions) "totexecs"
from v$sqlarea where executions < 5 group by substr(sql_text, 1, 80)
having count(*) > 30 order by 2;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28869493/viewspace-1133941/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 提高SQL查詢效能SQL
- SQL查詢效能分析SQL
- oracle常用SQL查詢OracleSQL
- SQL查詢語句 (Oracle)SQLOracle
- Oracle 常用SQL查詢列表OracleSQL
- 常用ORACLE查詢命令SQLOracleSQL
- Oracle遞迴查詢sqlOracle遞迴SQL
- 透過shell和sql結合查詢效能sqlSQL
- 通過shell和sql結合查詢效能sqlSQL
- Oracle 外來鍵查詢sqlOracleSQL
- oracle sql分頁查詢(一)OracleSQL
- oracle常用經典sql查詢OracleSQL
- Oracle SQL的遞迴查詢OracleSQL遞迴
- oracle、my sql、sql隨機查詢語句OracleSQL隨機
- 【SQL】Oracle查詢轉換之 OR用法SQLOracle
- oracle常用經典SQL查詢 (轉)OracleSQL
- oracle常用經典SQL查詢(zt)OracleSQL
- 如何找出你效能最差的SQL Server查詢SQLServer
- 【SQL】Oracle查詢轉換之物化檢視查詢重寫SQLOracle
- 【oracle 效能優化】組合索引查詢。Oracle優化索引
- oracle效能優化(二)-調整查詢Oracle優化
- ORACLE_OCP之SQL_子查詢OracleSQL
- Oracle 表空間查詢相關sqlOracleSQL
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- SQL查詢的:子查詢和多表查詢SQL
- 改進資料庫效能-SQL查詢優化資料庫SQL優化
- 優化SQL查詢:如何寫出高效能SQL語句優化SQL
- 【SQL查詢】集合查詢之INTERSECTSQL
- Oracle效能問題檢查 - 常用查詢指令碼(final)Oracle指令碼
- 優化SQL Server 2008的查詢效能優化SQLServer
- 【SQL】Oracle查詢轉換之謂詞推送SQLOracle
- Oracle常用抓取SQL-標量子查詢等OracleSQL
- 查詢Oracle正在執行的SQL語句OracleSQL
- 查詢oracle比較慢的session和sqlOracleSessionSQL
- ORACLE 當月、本週、當年SQL查詢OracleSQL
- 原生SQL查詢SQL
- SQL 聚合查詢SQL
- sql 查詢效率SQL