• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    Oracle 中定位重要(消耗資源多)的SQL

    發布時間:  2012/9/12 17:10:41

    在分析SQL性能的時候,經常需要確定資源消耗多的SQL,總結如下:

    1 查看值得懷疑的SQL
    select substr(to_char(s.pct,'99.00'),2)||'%'load,

           s.executions executes,

           p.sql_text-
     


    from(select address,

                disk_reads,

                executions,

                pct,

                rank() over(order by disk_reads desc) ranking

             from(select address,

                         disk_reads,

                         executions,

                         100*ratio_to_report(disk_reads) over() pct

                     from sys.v_$sql

                    where command_type!=47)

            where disk_reads>50*executions) s,

           sys.v_$sqltext p

    where s.ranking<=5

      and p.address=s.address

    order by 1, s.address, p.piece;

    2 查看消耗內存多的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;

    3 查看邏輯讀多的SQL
    select*

    from(select buffer_gets, sql_text

         from v$sqlarea

         where buffer_gets>500000

         order by buffer_gets desc)

    where rownum<=30;

    4 查看執行次數多的SQL

    select sql_text, executions

    from(select sql_text, executions from v$sqlarea order by executions desc)

    where rownum<81;

    5 查看讀硬盤多的SQL

    select sql_text, disk_reads

    from(select sql_text, disk_reads from v$sqlarea order by disk_reads desc)

    where rownum<21;

    6 查看排序多的SQL

    select sql_text, sorts

    from(select sql_text, sorts from v$sqlarea order by sorts desc)

    where rownum<21;

    7 分析的次數太多,執行的次數太少,要用綁變量的方法來寫sql

    set pagesize 600;

    set linesize 120;

    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;

    8 游標的觀察
    set pages 300;

    select sum(a.value), b.name

    from v$sesstat a, v$statname b

    where a.statistic#=b.statistic#

    and b.name='opened cursors current'

    group by b.name;

     

    select count(0) from v$open_cursor;

     

    select user_name, sql_text,count(0)

    from v$open_cursor

    group by user_name, sql_text

    having count(0)>30;

    9 查看當前用戶&username執行的SQL
    select sql_text

    from v$sqltext_with_newlines

    where(hash_value, address) in

         (select sql_hash_value, sql_address

          from v$session

          where username='&username')

    order by address, piece;

     


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線