Oracle中獲取最低效的SQL的語句

2021-06-19 18:35:53 字數 1742 閱讀 6384

oracle提供了很多任務具來查詢最低效的sql,但是,本質上就是通過如下sql語句,從相關系統檢視中獲取最低效的sql:

select rownum as rank, a.*

from (select parsing_schema_name run_user, --執行使用者

sql_fulltext, --sql文字,全,帶格式

sql_text, --sql文字前面部分

elapsed_time , --單位是微秒,語句執行完的總時間,包括cpu時間和等待時間

cpu_time , --cpu時間,語句執行的時間 

module, --當前執行模組呼叫者名稱

elapsed_time - cpu_time wait_time,

trunc((elapsed_time - cpu_time)*100/elapsed_time,2) "wait_time_per%",--等待時間所佔百分比

executions, --執行次數

elapsed_time/(executions+1) per_time, --每次執行平均時間,

buffer_gets, --

disk_reads, --磁碟讀

hash_value, --sql的hash_value,以備獲取完整sql

user_io_wait_time,

sorts --排序次數

from v$sqlarea t

where elapsed_time > 20000 and parsing_schema_name<>'sys'

order by elapsed_time desc) a

where rownum < 21

order by elapsed_time desc

responsce time = service time + wait time

乙個操作的響應時間 = 必要的服務(計算)時間 + 各種等待時間

而在v$sql中

elapsed_time 代表了執行完畢的時間 , 也就是響應時間,response time,

而cpu_time 代表了執行時消耗的cpu 時間,也就是計算時間,服務時間,service time

所以 elapsed_time = cpu_time + wait_time

有時候可以通過這兩個值的差來衡量這個sql的wait time.

當然,有時候可能關心elapsed_time ,有時候則關心cpu_time ,也有時候關心wait time,取決於實際需求。

這個sql,務必儲存,掌握這些sql,比使圖形化工具,要高效方便的多得多!

select longops.sid,longops.elapsed_seconds,longops.opname,sql.sql_text from v$session_longops longops , v$sql sql where longops.elapsed_seconds>6 and longops.sql_id=sql.sql_id;

select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value

from v$session a,v$process b,v$sesstat c

where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;

ORACLE中帶引數 REF游標及動態SQL例項

帶 引數的游標 declare dept code emp.deptno type 宣告列型別變數三個 emp code emp.empno type emp name emp.ename type cursor emp cur deptparam number is select empno,en...

oracle中關於日期的獲取

最近的乙個功能定時任務要求在當天凌晨2點生成前一天的資料。涉及到資料庫時間的操作,特此記錄一下,整理關於日期獲取的筆記如下 獲取當前系統的前一天日期0點到23 59 59的時間 select trunc sysdate 1 trunc sysdate 1 1 1 86400 from dual 獲取...

Mybaits在業務層獲取執行的完整sql

最近老闆提出了乙個需求,那就是把執行的sql語句儲存在操作日誌。所以還是想通過查閱mybatis的原始碼來實現。大功告成,而且把引數都已經賦值進去了。這個只是引數是物件是使用,如果是map string,參照著單獨寫即可。網上關於mybatis的介紹的文章太少,不知道有沒有其他更好的方法,因為英語有...