溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

查看性能差的sql語(yǔ)句

發(fā)布時(shí)間:2020-08-11 21:30:30 來(lái)源:網(wǎng)絡(luò) 閱讀:396 作者:DevOperater 欄目:數(shù)據(jù)庫(kù)

查詢出性能最差的10條sql

SELECT * FROM (select PARSING_USER_ID,EXECUTIONS,SORTS, 

COMMAND_TYPE,DISK_READS,sql_text FROM v$sqlarea 

order BY disk_reads DESC )where ROWNUM<10 ; 

HASH_VALUE:SQL語(yǔ)句的Hash值。

ADDRESS:SQL語(yǔ)句在SGA中的地址。

這兩列被用于鑒別SQL語(yǔ)句,有時(shí),兩條不同的語(yǔ)句可能hash值相同。這時(shí)候,必須連同ADDRESS一同使用來(lái)確認(rèn)SQL語(yǔ)句。



HASH_VALUE:SQL語(yǔ)句的Hash值。

ADDRESS:SQL語(yǔ)句在SGA中的地址。

這兩列被用于鑒別SQL語(yǔ)句,有時(shí),兩條不同的語(yǔ)句可能hash值相同。這時(shí)候,必須連同ADDRESS一同使用來(lái)確認(rèn)SQL語(yǔ)句。

PARSING_USER_ID:為語(yǔ)句解析第一條CURSOR的用戶

VERSION_COUNT:語(yǔ)句cursor的數(shù)量

KEPT_VERSIONS:

SHARABLE_MEMORY:cursor使用的共享內(nèi)存總數(shù)

PERSISTENT_MEMORY:cursor使用的常駐內(nèi)存總數(shù)

RUNTIME_MEMORY:cursor使用的運(yùn)行時(shí)內(nèi)存總數(shù)。

SQL_TEXT:SQL語(yǔ)句的文本(最大只能保存該語(yǔ)句的前1000個(gè)字符)。

MODULE,ACTION:使用了DBMS_APPLICATION_INFO時(shí)session解析第一條cursor時(shí)的信息

SORTS: 表示排序的次數(shù)

CPU_TIME: 語(yǔ)句被解析和執(zhí)行的CPU時(shí)間

ELAPSED_TIME: 語(yǔ)句被解析和執(zhí)行的共用時(shí)間

PARSE_CALLS: 語(yǔ)句的解析調(diào)用(軟、硬)次數(shù)

EXECUTIONS: 表示同一條SQL語(yǔ)句一共執(zhí)行了多少次

INVALIDATIONS: 語(yǔ)句的cursor失效次數(shù)

LOADS: 語(yǔ)句載入(載出)數(shù)量

ROWS_PROCESSED: 語(yǔ)句返回的列總數(shù)


查看最消耗資源的sql

SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls  

FROM V$SQLAREA  

WHERE buffer_gets > 10000000 OR disk_reads > 1000000  

ORDER BY buffer_gets + 100 * disk_reads DESC;


DISK_READS:表示物理讀的數(shù)量。


分析性能差的sql

SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,   

ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,   

ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,   

SQL_TEXT   

FROM V$SQLAREA   

WHERE EXECUTIONS>0   

AND BUFFER_GETS >0   

AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8  



查詢共享池中已經(jīng)解析過(guò)的SQL語(yǔ)句及其相關(guān)信息

--EXECUTIONS 所有子游標(biāo)的執(zhí)行這條語(yǔ)句次數(shù)

--DISK_READS 所有子游標(biāo)運(yùn)行這條語(yǔ)句導(dǎo)致的讀磁盤(pán)次數(shù)

--BUFFER_GETS 所有子游標(biāo)運(yùn)行這條語(yǔ)句導(dǎo)致的讀內(nèi)存次數(shù)

--Hit_radio 命中率

--Reads_per_run 每次執(zhí)行讀寫(xiě)磁盤(pán)數(shù)

籠統(tǒng)的說(shuō)EXECUTIONS,BUFFER_GETS,Hit_radio越高表示讀內(nèi)存多,磁盤(pán)少是比較理想的狀態(tài),因此越高越好

另外兩個(gè)越高讀磁盤(pán)次數(shù)越多,因此低點(diǎn)好



獲取執(zhí)行次數(shù)最多的10個(gè)SQL

select sql_text,executions

from (

select sql_text,executions,rank() over(order by executions desc) exec_rank

from v$sql

)

where exec_rank <=10;



獲取單次執(zhí)行時(shí)間最長(zhǎng)的10個(gè)SQL

select sql_id,sql_text,round(exec_time/1000000,0) exec_time

from(

select sql_id,sql_text,exec_time,rank() over (order by exec_time desc) exec_rank

from

(

select sql_id,sql_text,cpu_time,elapsed_time,executions,round(elapsed_time/executions,0) exec_time

from v$sql

where executions>1

)

)

where exec_rank <=10;



CPU和IO占用最多:

select sql_text,executions,buffer_gets,disk_reads from v$sql 

where buffer_gets > 100000

or disk_reads > 100000

order by buffer_gets+100*disk_reads desc

前5個(gè)花費(fèi)最多CPU和時(shí)間:


select sql_text,executions,

round(elapsed_time/1000000,2) elapsed_seconds,

round(cpu_time/1000000,2) cpu_secs from 

(select * from v$sql order by elapsed_time desc)

where rownum<6

因?yàn)閂$SQL是動(dòng)態(tài)性能圖,只能保留一些頻繁執(zhí)行的SQL。

查看最耗費(fèi)資源的會(huì)話 

select to_char(m.END_TIME,'DD-MON-YYYY HH24:MI:SS') e_dttm, m.INTSIZE_CSEC/100 ints, s.USERNAME usr, m.SESSION_ID sid, m.SESSION_SERIAL_NUM ssn, ROUND (m.CPU) cpu100, m.PHYSICAL_READS prds, m.LOGICAL_READS lrds, m.PGA_MEMORY, m.HARD_PARSES hp, m.SOFT_PARSES sp, m.PHYSICAL_READ_PCT prp, m.LOGICAL_READ_PCT lrp, s.SQL_ID from v$sessmetric m,v$session s where (m.PHYSICAL_READS>100 or m.CPU>100 or m.LOGICAL_READS>100) and m.session_id=s.SID and m.SESSION_SERIAL_NUM=s.SERIAL# order by m.PHYSICAL_READS DESC,m.CPU desc,m.LOGICAL_READS desc;  



查詢使用頻率最高的5個(gè)查詢:  

select sql_text,executions from (select sql_text,executions, rank() over (order by executions desc) exec_rank from v$sql) where exec_rank <=5;


消耗磁盤(pán)讀取最多的sql top5: 

select disk_reads,sql_text from (select sql_text,disk_reads, dense_rank() over (order by disk_reads desc) disk_reads_rank from v$sql) where disk_reads_rank <=5; 


找出需要大量緩沖讀取(邏輯讀)操作的查詢: 

select buffer_gets,sql_text from (select sql_text,buffer_gets, dense_rank() over (order by buffer_gets desc) buffer_gets_rank from v$sql) where buffer_gets_rank<=5;

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI