V$SQL、V$SQLSTATS、V$SQLAREA

lusklusklusk發表於2016-03-15

V$SQL檢視記錄了例項啟動以來存放在shared pool中的的所有已經解析的SQL語句資訊,它不包含GROUP BY字句,並且為每一條SQL語句中單獨存放一條記錄;但是出於對空間原因有可能會刪除舊的sql語句, 儲存的是具體的SQL 和執行計劃相關資訊

(任何一條執行過的語句不管執行了幾次在V$SQL中都只有一條記錄,V$SQL中會記錄執行了幾次。兩條一模一樣的語句但是在不同的schema下執行的兩種結果,如select * from t1.testsyesystem下執行則V$SQL只有一條記錄。如在syssystem都執行select * from testV$SQL中有兩條記錄,兩條記錄的CHILD_NUMBERPARSING_SCHEMA_NAME不一樣。同一個使用者下執行一樣的語句如果大小寫不一樣或加了hint的話則會出現多個V$SQL記錄,說明V$SQL對應的sql語句必須一模一樣,如果alter system flush shared_pool(主站慎用)後再執行一樣的語句,發現語句在V$SQL中的SQL_IDHASH_VALUE與之前的一樣,說明SQL_IDHASH_VALUE應該是oracle自己的一套演算法來的,只是根據sql語句內容來進行轉換,sql語句不變則SQL_IDHASH_VALUE也不變。)

 

V$SQLAREA檢視記錄了例項啟動以來存放在shared pool中的的所有已經解析的SQL語句資訊,它包含GROUP BY字句,其中一條記錄顯示了一條共享SQL區中的統計資訊。它提供了有在記憶體中、解析過的和準備執行的SQL語句的統計資訊;

 

V$SQLSTATS檢視記錄了例項啟動以來存放在shared pool中的的所有已經解析的SQL語句資訊,也是返回基本的統計資訊,但是資訊保留的時間比v$sqlv$sqlarea時間長,其中的資料是v$sqlv$sqlarea的子集。

 

 

V$SQLV$SQLAREA兩個檢視的不同之處在於,V$SQL中為每一條SQL保留一個條目,而V$SQLAREA可以看做V$SQL根據 sqltext 做了 group by 之後的資訊

 

所以,檢視TOP 10 SQL只需要以V$SQL為基礎即可

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2057475/,如需轉載,請註明出處,否則將追究法律責任。

相關文章