亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

存儲過程調優之“10046”事件

系統 1772 0

一、前言

前段時間應需求,寫存儲過程,以滿足避免在大數據量的原始表中進行直接的查詢工作。從而生成一張中間表,用于以后各個維度的報表統計

  從而提高每張報表的查詢效率。久而久之,隨著存儲過程越來越多,每天的任務耗時也越來越大,從而不得不考慮對存儲過程進行優化。

二、"10046"事件

Oracle的10046事件,它可以跟蹤應用程序所執行的SQL語句,從而得到每條SQL的解析次數,執行次數,CPU使用時間,每條SQL中每個部位的耗時等。這樣,我們

  就可以根據這些信息來分析、定位數據庫的性能問題。

    10046event是oracle用于系統性能分析時的一個最重要的事件,當激活這個事件后,將通知oracle kernel追蹤會話的相關即時信息,并寫入相應的trace文件中。這些 

  信息包括SQL的解析,綁定變量的使用情況,會話中發生的等待時間以及會羅列出主要耗時的部分等。

    10046event有不同的級別(level),分別追蹤記錄不同程度的信息。需要注意的是,級別是向下兼容的 即高一級別生成的trace所包含的信息包含低一級別的所有信息,

  追蹤級別大致有:

     level 1:跟蹤sql語句,包括解析、執行、提取、提交和回滾等。

     level 4:包括變量的詳細信息。

     level 8:包括等待事件。

     ??level 12:包括綁定變量與等待事件。

     ??其中,level 1相當于打開了sql_trace。

     (Tips) 向下兼容。

三、10046event 追蹤最小化例子

命令行/plsql 鍵入如下:

alter session set tracefile_identifier='10046';-----------------------設置追蹤標識符

alter session set events '10046 trace name context forever, level 12';----------------開啟追蹤,并設置追蹤級別

    select * from ALL_OBJECTS; -----------------所要追蹤的SQL語句

alter session set events '10046 trace name context off';------------關閉追蹤

    執行完后,即所有會話都結束后,oracle將會生成一個orcl_ora_XXXX_10046.trc 的文件,根據個人目錄不同,會生成在不同的

  目錄當中,我們可以用locate命令來進行查詢

    得到這個文件后,我們再用tkprof這個命令,對該文件進行格式化,便于我們的閱讀。

    如: tkprof trace\orcl_ora_xxxx_10046.trc ?10046.txt sys=no sort=prsela,exeela,fchela

四、解析trace文件

    我們打開10046.txt,對于初學者來說,并不能好好的去分析包含的信息,因為其中包含了許多“名詞”,下面將會對此進行介紹

    1)摘錄第一部分,SQL語句的執行情況總覽
      select *
      from
      ALL_OBJECTS


    call? ???count? ?? ? cpu? ? elapsed? ?? ? disk? ?? ?query? ? current? ?? ???rows
    ------- ------??-------- ---------- ---------- ---------- ----------??----------
    Parse? ?? ???1? ?? ?0.00? ?? ? 0.00? ?? ?? ? 0? ?? ?? ? 0? ?? ?? ? 0? ?? ?? ???0
    Execute? ?? ?1? ?? ?0.00? ?? ? 0.00? ?? ?? ? 0? ?? ?? ? 0? ?? ?? ? 0? ?? ?? ???0
    Fetch? ?? ???2? ???10.94? ?? ?10.68? ???222186? ???222957? ?? ?? ? 0? ?? ?? ???1
    ------- ------??-------- ---------- ---------- ---------- ----------??----------
    total? ?? ???4? ???10.94? ?? ?10.68? ???222186? ???222957? ?? ?? ? 0? ?? ?? ???1

    關于統計表格的標題信息中count、cpu、elapsed、disk、query、current和rows的說明在該trace文件的最前端有一個簡要的說明,這里再分別贅述一下。
    count? ?:查詢在此階段執行的次數;
    cpu? ???:該查詢在此階段的CPU時間量,以毫秒為單位;
    elapsed :花費在此階段上的掛鐘時間,該值比cpu值大的時候,表明存在等待事件;
    disk? ? :執行物理I/O次數;
    query? ?:在意一致性檢索方式獲得塊時,執行邏輯I/O次數;
    current :邏輯I/O次數;
    rows? ? :此階段,被處理或受影響的行數。

    關于第一列的贅述:
    Parse? ?:軟編譯和硬編譯次數;
    Execute :在open和execute語句中完成的內容;
    Fetch? ?:select中會有數據顯示,在update語句中不會有數據顯示。

    2)摘錄運行環境信息
    Misses in library cache during parse: 0
    Optimizer mode: ALL_ROWS
    Parsing user id: 51

    第一行的“0”表示查詢使用的是軟解析(soft parse)。
    優化模式是:ALL_ROWS
    使用最后一行的用戶ID可以獲得執行時的會話信息。獲得用戶信息可以通過下面的SQL語句完成。
    sys@ora10g> select * from all_users where user_id = 51;

    USERNAME? ?? ?? ?? ?? ?? ?? ?? ???USER_ID CREATED
    ------------------------------ ---------- -------------------
    SEC? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?51 2015-02-15 13:04:03

    3)摘錄執行計劃信息
    Rows? ???Row Source Operation
    -------??---------------------------------------------------
? ??     ?1??SORT AGGREGATE (cr=222957 pr=222186 pw=0 time=10686023 us)
 100000000? ?INDEX FAST FULL SCAN PK_T (cr=222957 pr=222186 pw=0 time=100000562 us)(object id 45619)

    有趣發現:通過第二行可以得到這個t表的數據量,這里顯示結果是1億。
    “解剖”上面出現的幾個重要參數:
    cr=222957? ?? ?? ? -- 一致性讀取
    pr=222186? ?? ?? ? -- 物理讀取
    pw=0? ?? ?? ?? ?? ?-- 物理寫
    time=100000562 us??-- 占用時間,單位:微妙 百萬分之一秒


    4)摘錄等待事件
    Elapsed times include waiting on following events:
    ??Event waited on? ?? ?? ?? ?? ?? ?? ?? ?? ???Times? ?Max. Wait??Total Waited
    ??----------------------------------------? ?Waited??----------??------------
    ??SQL*Net message to client? ?? ?? ?? ?? ?? ?? ???3? ?? ???0.00? ?? ?? ? 0.00
    ??SQL*Net message from client? ?? ?? ?? ?? ?? ?? ?3? ?? ???0.00? ?? ?? ? 0.00
    ??db file scattered read? ?? ?? ?? ?? ?? ?? ? 14249? ?? ???0.00? ?? ?? ? 1.10
    ??db file sequential read? ?? ?? ?? ?? ?? ?? ?? ?59? ?? ???0.00? ?? ?? ? 0.00

    通過這段等待事件的描述,可以清楚的得到在執行SQL語句的過程中都出現了哪些引人注目的等待事件。比如上面顯示出的“db file scattered read”和“db file     sequential read”信息,如果此類信息在生產環境中大量出現,就需要重點深入分析和研究了。

?

五、總結 

    對于10046事件,本身是非常消耗資源,對于存儲過程,如果對此進行設置跟蹤,會增加該存過的耗時,因此在使用過程中應避免一直啟用追蹤。但對于存儲過程的調優,其包含的各種信息是非常有助于對整個存過進行有效的分析,對于10046擴展追蹤,非常適合于對那些把很多業務邏輯寫入到存儲過程中的軟件調優

?

?

?

存儲過程調優之“10046”事件


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 深夜视频免费看 | 超碰v| 毛片免费永久不卡视频观看 | 国产欧美成人 | 狠狠狠地在啪线香蕉 | 国产精品久久久久久久福利院 | 亚洲成av人片天堂网 | 在线观看国产亚洲 | 久草新免费 | 天天插天天插天天插 | 国产成人亚洲精品一区二区在线看 | 免费观看欧美一级毛片 | 久久涩综合 | 成人aa在线观看视频 | 国产一级毛片国语版 | 激情综合网五月 | 日韩综合色 | 四虎免费永久网站入口 | 国产欧美一区二区三区在线看 | 天天操天天摸天天射 | 狠狠亚洲婷婷综合色香 | 日本精品高清一区二区不卡 | 成人www视频网站免费观看 | 亚洲精品一区国产二区 | 色avv| 91精品全国免费观看 | 福利姬在线精品观看 | 99久久做夜夜爱天天做精品 | 奇米影视中文字幕 | 欧美乱子伦一区二区三区 | 成人美女免费网站视频 | 呦女亚洲一区精品 | 99热在 | www.黄色在线 | 国产亚洲精品成人a在线 | 99视频精品 | 国产精品一区久久精品 | 性欧美欧美之巨大69 | 天天干天天爽 | 高清一区高清二区视频 | 欧美一级成人免费大片 |