賽迪網 > IT技術 數據庫 > 精彩更新
  IT資訊搜索
 
IT產品搜索

Oracle數據庫最優化參數縮短反應時間

發佈時間:2007.01.29 05:02     來源:zdnet    作者:zdnet









在Oracle9i之前,僅有的兩個CBO模式是ALL_ROWS以及FIRST_ROWS。傳統的FIRST_ROWS SQL最優化的缺點之一是,它的運演算法則並沒有特別指定行檢索的範圍。

但是,在Oracle9i中包含了幾個新的最優化指令:

  FIRST_ROWS_1 
  FIRST_ROWS_10 
  FIRST_ROWS_100 
  FIRST_ROWS_1000 
  FIRST_ROWS_n

最優化會指示選擇一個查詢執行計劃,這個計劃會縮短生成最初n行查詢結果的時間。

你可以把這個新的CBO模式設置到數據庫中的幾個層次上:systemwide,在會話層或者在查詢層次上。

  alter system set optimizer_mode=first_rows_100;
  alter session set optimizer_mode = first_rows_100;
  select /*+ first_rows(100) */ from student;
  

根據來自Oracle公司的說法,使用FIRST_ROWS_n最優化,Oracle查詢能夠使用最少的反應時間來給出最初的n行結果。更快速的給出最初n行的結果能夠提高用戶對應用軟體的滿意程度的原因是由於用戶能夠更為快速的得到最初的那些數據。

當使用FIRST_ROWS最優化索引的時候,ALL_ROWS最優化支援完整表的搜尋。但是,Oracle通過FIRST_ROWS_n最優化擴展了這個概念的範疇。

在傳統的FIRST_ROWS最優化中,Oracle CBO支援索引掃描,甚至當全部成本高於完整表掃描的時候也是如此。在對於完整表掃描不太昂貴的較小型表的情況下,這種情況也是尤為明顯。

請看一看下面的這個例子。

  Set autotrace on explain
  alter session set optimizer_goal = choose;
  select * from emp where sal < 1200;
  PLAN 
  SELECT STATEMENT (OPTIMIZER=CHOOSE) (COST=62) (ROWS=99)
  TABLE ACCESS FULL EMP (COST=62) (ROWS=99)
  

現在,我們要使用FIRST_ROWS最優化來進行相同的查詢工作。

  alter session set optimizer_goal = first_rows;
  select * from emp where sal < 1200;
  The explain plan is now transformed to:
  PLAN 
  SELECT STATEMENT (OPTIMIZER=FIRST_ROWS) (COST=102)
  TABLE ACCESS BY INDEX ROWID EMP (COST=102) (ROWS=99)
  INDEX RANGE SCAN SA L_IDX (COST=2) (ROWS=99)

我們希望CBO能夠對索引進行支援,但是我們還是非常驚奇的看到選擇了一種比完整表掃描更為昂貴的方式。這是一個臨界點。在Oracle9i之前,FIRST_ROWS最優化是一種對內部規則和費用的一種綜合,而且Oracle9i FIRST_ROWS最優化也是完全基於成本的。

在Oracle9i之前,我們使用OPTIMIZER_INDEX_COST_ADJ參數來控制CBO選擇索引。雖然Oracle公司聲稱FIRST_ROWS_n最優化能夠讓查詢變得更加快速,但是要記住, Oracle9i CBO所負責的是最初那些行的查詢訪問的成本。換一種說法,所有的FIRST_ROWS_n模式所做的就是決定出更為明智的選擇,決定是使用索引還是使用完整表掃描來進行對小型表的訪問。由於多數的Oracle9i DBA會把這些小型表存儲于KEEP池中,因此該參數使用的範圍並不廣。(T004)


[ 發表評論 ] 字體[  ] [ 列印 ] [ 進入博客 ] [ 進入論壇 ]  [ 推薦給朋友 ]
  相關文章
· Oracle 9i數據庫中實體化視圖簡介 (01-26) · Oracle數據庫在網格計算中的應用 (01-26)
· Oracle 9i數據庫的動態SGA特性探索 (01-26) · 怎樣自動將數據導入 Oracle數據庫 (01-26)
· 用最簡易方法搜尋Oracle的版本資訊 (01-25) · 用改變跟蹤技術加速Oracle遞增備份 (01-25)
· 在Oracle層次查詢中給SIBLINGS排序 (01-25) · Oracle 10g自動工作負載資訊庫剖析 (01-25)
· 甲骨文新推Oracle Linux管理套裝軟體 (01-25) · 防患于未然 給Oracle數據庫打補丁 (01-25)
  客戶需求反饋表
* 姓  名:
更多資料  了解方案  認識廠商
* 單位名稱:
* 聯繫電話:
* 電子郵件:
  賽迪推薦  
  手機·資費 ·新品·導購·評測·手機資費·寬帶
手機搜索  諾基亞 N73 MOTO Z6
  IT產品 ·筆記本·臺式機·伺服器·列印·投影
IT產品搜索 
  IT技術 ·開發·網管·安全·數據庫·作業系統
  博客·論壇 ·曾劍秋·項立剛·Java學習·網管