日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...

發布時間:2025/3/20 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄:

Oracle數據完整性和鎖機制? 索引及優化之表分析? 表分析、約束及表間關系? Oracle體系結構1 Oracle體系結構2? 海量數據庫及分區1? 海量數據庫及分區2? 海量數據庫及分區3? 海量數據庫及分區4? 高級SQL優化(一)?? 高級SQL優化(二)?? 高級SQL優化(三) 常用優化工具? PPT和源碼下載:???http://***/forum/posts/list/6365.html 配套視頻課程 Oracle性能優化?http://***/product/601? 海量數據庫和高級SQL優化?http://***/product/602 SQL*PLUS下使用AUTOTRACE 1.AUTOTRACE簡介?? AUTOTRACE是SQL*Plus的一項功能,其作用是自動跟蹤SQL語句,為SQL 語句生成一個 執行計劃并且提供與 該語句的處理有關的統計信息。 SQL*Plus AUTOTRACE 可以用來替代 SQL Trace 使用,AUTOTRACE 的好處是不必設置跟蹤文件的格式,并且它將自動為 SQL 語句顯示執行計劃。AUTOTRACE與執行計劃的區別是AUTOTRACE 分析和執行語句;而EXPLAIN PLAN僅分析語句,而不負責執行語句。 AUTOTRACE在SQL*PLUS下執行,使用AUTOTRACE不會產生跟蹤文件。 2.配置AUTOTRACE (1).確保表PLAN_TABLE已經創建,如果沒有則如下創建: (2).確保角色plustrace已經創建,如果沒有則如下創建: ? 3.使用AUTOTRACE 4. AUTOTRACE設置命令
序號 命令 解釋
1 SET AUTOTRACE OFF 此為默認值,即關閉Autotrace
2 SET AUTOTRACE ON 產生結果集和解釋計劃并列出統計
3 SET AUTOTRACE ON EXPLAIN 顯示結果集和解釋計劃不顯示統計
4 SETAUTOTRACE TRACEONLY 顯示解釋計劃和統計,盡管執行該語句但將看不到結果集
5 SET AUTOTRACE TRACEONLY STATISTICS 只顯示統計
參見每個設置的現場舉例 ?5. AUTOTRACE STATISTICS含義
序號 列名 解釋
1 recursive call 遞歸調用SQL的個數;Oracle在執行這個SQL的時候,有時候會生成很多額外的SQL語句,這個就稱為遞歸調用
2 db block gets 從buffer cache中讀取的block的數量
3 consistent gets 從buffer cache中讀取的undo數據的block的數量
4 physical reads 從磁盤讀取的block的數量
5 redo size DML生成的redo的大小
6 sorts (memory) 在內存執行的排序量
7 sorts (disk) 在磁盤上執行的排序量,如果memory空間使用不足,是會使用disk的空間的
8 bytes sent via SQL*Net to client 利用sql*net傳入到client的字節數;
9 bytes received via SQL*Net from client 利用sql*net傳出client的字節數;
? 使用SQL調優顧問 刪除掉bigtab和smalltab上的所有索引: ? ? 既然上述語句性能很差,那么怎么優化呢?幸運的是Oracle提供一個工具稱為SQL調優顧問。從Oracle 10g起,可以使用SQL調優顧問 (SQL Tuning Advisor ,STA)來獲得一個性能很差的語句的優化結果。STA的特點是簡單、智能,DBA只需要調用函數就可以給出一個性能很差的語句的優化結果,從而做到有的放矢! 使用DBMS_SQLTUNE包來創建優化任務并閱讀優化建議: 創建完成后驗證是否完成: ?創建完成后驗證是否完成: ? 單擊該條目查看優化結果 也可以通過SQL語句來查看結果,此方法是我們最喜歡的方法: ?? 進行優化: 優化后在使用autotrace: 優化后在使用autotrace: 結論:
項目 優化前 優化后 倍數
從持久層獲取consistent gets(從buffer cache中讀取的undo數據的block的數量) 21688 6950 3
物理讀physical reads(從磁盤讀取的block的數量) 21589 6928 3
遞歸調用recursive call 0 1 N/A
時間(毫秒) 2070 1078 2
使用STA能快速定位性能瓶頸,從而為性能優化提供了準確的依據! 實時SQL監視 實時SQL監視(real-time SQL Monitorning)是Oracle 11g的另外一個新功能,其作用是允許用戶監視正在執行的SQL。默認情況下,當使用并行查詢、或者當SQL執行的CPU或I/O超過5秒鐘時會自動啟動。 也可以使用優化提示強制使用實時SQL監視功能,如下: select ? count(*) ? from bigtab a, smalltab b ?? where? a.object_name=b.table_name 如果要強制不使用實時SQL監視功能,則也可以使用優化提示: select ? count(*) ? from bigtab a, smalltab b ?? where? a.object_name=b.table_name 與實時SQL監視相關的系統視圖包括: uV$SQL_MONITOR uV$SQL_PLAN_MONITOR uV$ACTIVE_SESSION_HISTORY uV$SESSION uV$SESSION_LONGOPS uV$SQL uV$SQL_PLAN 對于剛剛監視的結果,可以使用DBMS包讀取: select dbms_sqltune.report_sql_monitor from dual; 1.實時SQL監視示例1-執行超過5秒的SQL ? ? ?在OEM中查看監視結果,選擇“性能”->“其它監視鏈接”->“SQL Monitoring”: ? ?查看具體的監視報告(圖形化): 單擊“文本報告”,則: 使用DBMS包查看監視結果: 2.實時SQL監視示例2-使用優化提示強制監視 ?? 結論: 1.實時SQL監視通過OEM查看其監視報告時,具有更好的圖形化的展示效果,因此更加直觀 2.如果監視的SQL語句發現具有全表掃描等執行計劃的特征,或者CPU時間和I/O時間比較長,則可以與SQL調優顧問接合起來,不但能獲知性能瓶頸,而且能獲得Oracle推薦的優化策略。 3.實踐中,程序員往往不加思考的按照自己的理解和經驗編寫SQL,此舉在90%的項目中存在,從而造成項目產品投用后很快就產生各種性能瓶頸,正確的做法應該是 在準備好足夠的測試數據,并且監視每一條SQL并在開發的初始階段即 優化之。 習題 1.在對索引的限制中,關于NOT和不等于的限制在11g數據庫CBO模式下還存在嗎,為什么?在RBO模式下呢? 2.如果某個索引中的列具有可空屬性,則Oracle執行類似 is null時不會使用索引,其原因是什么? 3.Oralce具有那三種訪問路徑,其中最快的兩種是什么? 4.什么情況下應該使用復合索引,此時使用復合索引比使用多個單個索引具有哪些優勢? 5.分別配置并使用SQL優化常用的三種工具:Autotrace、調優顧問和實時監視顧問,復習本課的舉例來加深理解。

轉載于:https://www.cnblogs.com/liuzhuqing/archive/2013/02/04/7480625.html

總結

以上是生活随笔為你收集整理的高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。