數據庫進階:Oracle中SQL語句執行效率的查找與解決

發表于:2008-05-13來源:作者:點擊數: 標簽:數據庫sqlSQLSqloracle
Oracle中SQL語句執行效率問題的查找與解決: 一、識別占用資源較多的語句的方法(4種方法) 1. 測試 組和最終用戶反饋的與反應緩慢有關的問題。 2.利用V_$SQLAREA視圖提供了執行的細節。(執行、讀取磁盤和讀取緩沖區的次數) 數據列 EXECUTIONS:執行次數 DISK_R

Oracle中SQL語句執行效率問題的查找與解決:

  一、識別占用資源較多的語句的方法(4種方法)

  1.測試組和最終用戶反饋的與反應緩慢有關的問題。

  2.利用V_$SQLAREA視圖提供了執行的細節。(執行、讀取磁盤和讀取緩沖區的次數)

  • 數據列

  EXECUTIONS:執行次數

  DISK_READS:讀盤次數

  COMMAND_TYPE:命令類型(3:select,2:insert;6:update;7delete;47:pl/sql程序單元)

  OPTIMIZER_MODE:優化方式

  SQL_TEXT:Sql語句

  SHARABLE_MEM:占用shared pool的內存多少

  BUFFER_GETS:讀取緩沖區的次數

  • 用途

  1、幫忙找出性能較差的SQL語句

  2、幫忙找出最高頻率的SQL

  3、幫忙分析是否需要索引或改善聯接

  監控當前Oracle:family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的session,如出現時鐘的標志,表示此進程中的sql運行時間較長。

  4. Trace工具:

  a)查看數據庫服務的初始參數:timed_statistics、user_dump_dest和max_dump_file_size

  b)Step 1: alter session set sql_trace=true

  c)Step 2: run sql;

  d)Step 3: alter session set sql_trace=false

  e)Step 4:使用 “TKPROF”轉換跟蹤文件

  f)Parse,解析數量大通常表明需要增加數據庫服務器的共享池大小,

  query或current提取數量大表明如果沒有索引,語句可能會運行得更有效,

  disk提取數量表明索引有可能改進性能,

  library cache中多于一次的錯過表明需要一個更大的共享池大小

  二、如何管理語句處理和選項

  •基于成本(Cost Based) 和基于規則(Rule Based) 兩種優化器, 簡稱為CBO 和RBO

  •Optimizer Mode參數值:

  Choose:如果存在訪問過的任何表的統計數據 ,則使用基于成本的Optimizer,目標是獲得最優的通過量。如果一些表沒有統計數據,則使用估計值。如果沒有可用的統計數據,則將使用基于規則的Optimizer。

  All_rows:總是使用基于成本的Optimizer,目標是獲得最優的通過量。

  First_rows_n:總是使用基于成本的Optimizer,目標是對返回前N行(“n”可以是1,10,100或者1000)獲得最優的響應時間。

  First_rows:用于向后兼容。使用成本與試探性方法的結合,以便快速傳遞前幾行。

  RULE:總是使用基于規則的Optimizer

  三、使用數據庫特性來獲得有助于查看性能的處理統計信息(解釋計劃和AUTOTRACE)

  No1: Explain Plan

  A)使用Explain工具需要創建Explain_plan表,這必須先進入相關應用表、視圖和索引的所有者的帳戶內. (@D:\oracle\ora92\rdbms\admin\utlxplan)

  B) 表結構:

  STATEMENT_ID:為一條指定的SQL語句確定特定的執行計劃名稱。如果在EXPLAN PLAN語句中沒有使用SET STATEMENT_ID,那么此值會被設為NULL。

  OPERATION:在計劃的某一步驟執行的操作名稱,例如:Filters,Index,Table,Marge Joins and Table等。

  OPTION:對OPERATION操作的補充,例如:對一個表的操作,OPERATION可能是TABLE ACCESS,但OPTION可能為by ROWID或FULL。

  Object_Owner:擁有此database Object的Schema名或Oracle帳戶名。

  Object_name:Database Object名

  Object_type:類型,例如:表、視圖、索引等等

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97