查詢出性能最差的10條sql
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括南票網(wǎng)站建設(shè)、南票網(wǎng)站制作、南票網(wǎng)頁制作以及南票網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,南票網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到南票省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
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語句的Hash值。
ADDRESS:SQL語句在SGA中的地址。
這兩列被用于鑒別SQL語句,有時,兩條不同的語句可能hash值相同。這時候,必須連同ADDRESS一同使用來確認(rèn)SQL語句。
HASH_VALUE:SQL語句的Hash值。
ADDRESS:SQL語句在SGA中的地址。
這兩列被用于鑒別SQL語句,有時,兩條不同的語句可能hash值相同。這時候,必須連同ADDRESS一同使用來確認(rèn)SQL語句。
PARSING_USER_ID:為語句解析第一條CURSOR的用戶
VERSION_COUNT:語句cursor的數(shù)量
KEPT_VERSIONS:
SHARABLE_MEMORY:cursor使用的共享內(nèi)存總數(shù)
PERSISTENT_MEMORY:cursor使用的常駐內(nèi)存總數(shù)
RUNTIME_MEMORY:cursor使用的運(yùn)行時內(nèi)存總數(shù)。
SQL_TEXT:SQL語句的文本(最大只能保存該語句的前1000個字符)。
MODULE,ACTION:使用了DBMS_APPLICATION_INFO時session解析第一條cursor時的信息
SORTS: 表示排序的次數(shù)
CPU_TIME: 語句被解析和執(zhí)行的CPU時間
ELAPSED_TIME: 語句被解析和執(zhí)行的共用時間
PARSE_CALLS: 語句的解析調(diào)用(軟、硬)次數(shù)
EXECUTIONS: 表示同一條SQL語句一共執(zhí)行了多少次
INVALIDATIONS: 語句的cursor失效次數(shù)
LOADS: 語句載入(載出)數(shù)量
ROWS_PROCESSED: 語句返回的列總數(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)解析過的SQL語句及其相關(guān)信息
--EXECUTIONS 所有子游標(biāo)的執(zhí)行這條語句次數(shù)
--DISK_READS 所有子游標(biāo)運(yùn)行這條語句導(dǎo)致的讀磁盤次數(shù)
--BUFFER_GETS 所有子游標(biāo)運(yùn)行這條語句導(dǎo)致的讀內(nèi)存次數(shù)
--Hit_radio 命中率
--Reads_per_run 每次執(zhí)行讀寫磁盤數(shù)
籠統(tǒng)的說EXECUTIONS,BUFFER_GETS,Hit_radio越高表示讀內(nèi)存多,磁盤少是比較理想的狀態(tài),因此越高越好
另外兩個越高讀磁盤次數(shù)越多,因此低點(diǎn)好
獲取執(zhí)行次數(shù)最多的10個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í)行時間最長的10個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個花費(fèi)最多CPU和時間:
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是動態(tài)性能圖,只能保留一些頻繁執(zhí)行的SQL。
查看最耗費(fèi)資源的會話
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個查詢:
select sql_text,executions from (select sql_text,executions, rank() over (order by executions desc) exec_rank from v$sql) where exec_rank <=5;
消耗磁盤讀取最多的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;
找出需要大量緩沖讀?。ㄟ壿嬜x)操作的查詢:
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;