SQL Access Advisor 概要

kunlunzhiying發表於2016-03-29

當為複雜的、資料密集的查詢進行最優效能除錯資料庫時,物化檢視和索引(materialized views and indexes)是必要的。SQL訪問顧問透過為一個給定的工作量推薦的一個關於物化檢視、物化檢視日誌和索引的適當集合來幫助你達到最佳化目標。當最佳化SQL時,理解和使用這些結構是必要的,因為它們在資料讀取方面獲得重大效能的提升。但是,有得必有失。建立和維護這些物件需要花費時間,空間的要求也是很重要的。

 

SQL訪問顧問推薦使用點陣圖索引、基於函式的索引和B-樹索引。對於很多型別的專用查詢來說,點陣圖索引可以縮短相應時間,而且相對其他索引技術,它可以減少需要的儲存空間。B-樹索引在資料倉儲中最常用,主要用來索引唯一或接近唯一的關鍵字。


SQL訪問顧問的另一個元件也建議如何最佳化物化檢視,以便它們可以快速更新和利用一般查詢重寫(rewrite)。

 

SQL訪問顧問可以從Oracle企業管理器(Enterprise Manager)(從顧問中心(Advisor Central)頁訪問)中使用SQL訪問顧問嚮導(SQL Access Advisor Wizard)執行或透過DBMS_ADVISOR包呼叫。DBMS_ADVISOR包由一組分析和建議的函式與過程的集合組成,這些函式和過程可以由任何PL/SQL程式呼叫。下圖顯示了SQL訪問顧問如何對一個給定的工作量建議物化檢視的,這些工作量是從使用者定義的表或SQL快取中得到的。如果沒有提供工作量,它可以產生並使用一個理想的工作量。



 使用SQL訪問顧問嚮導或API,你可以做以下事情:
1. 建議基於收集到的或理想工作量資訊的物化檢視和索引。
2. 管理工作量。
3. 標記、更新和刪除建議。


除此之外,你可以用SQL訪問顧問API來做以下事情:
1. 執行一個使用單個SQL語句的快速最佳化。
2. 展示如何使物化檢視快速重新整理。
3. 展示如何改變一個物化檢視來使得一般查詢的重寫成為可能。

 

如果你收集到關於表和索引的基數,以及每個維度層次欄位、JOIN KEY欄位和時間表的關鍵字欄位的不同值的基數,那麼SQL訪問顧問的建議更具有意義。你可以透過用DBMS_STATS包收集精確或估計的統計資訊來做到這些事情。因為收集統計資訊是要花費時間的,而且也不需要極度精確的統計資訊,所以一般更願意使用估計的統計資訊。沒有這些統計資訊的話,任何引用該表的查詢會在工作量中標記為無效的,從而導致對這些查詢沒有任何建議。同時,它也建議所有存在的索引和物化檢視都已經被分析過。

 

使用SQL訪問顧問的概況
使用SQL訪問顧問的最簡單的方式是呼叫它的嚮導,這可以在Oracle企業管理器的顧問中心頁面找到。如果你更願意透過DBMS_ADVISOR包來使用SQL訪問顧問的話,下面會介紹它的基本元件和必須呼叫的不同的過程。

 

第一步 建立一個任務
在作出任何建議之間,必須建立一個任務。這個任務很重要,因為它儲存了關於建議程式的所有資訊,包括建議程式的結果。如果你使用Oracle企業管理器的嚮導或DBMS_ADVISOR.QUICK_TUNE過程,任務會自動建立。其他情況,你必須使用DBMS_ADVISOR.CREATE_TASK過程來建立一個任務。
你可以用DBMS_ADVISOR.SET_TASK_PARAMETER過程來定義引數,從而控制任務要做什麼。

 

第二部 定義工作量(workload)
工作量是呼叫SQL訪問顧問的主要輸入之一,它由一個或多個SQL語句構成,加上完全描述每個語句的各種

統計資訊和屬性。如果工作量包含了一個目標商業應用的所有SQL語句,那麼這個工作量被認為是一個全

工作量;如果工作量包含所有SQL語句的一個子集,那麼它就被認為是部分工作量。全工作量和部分工作量之間的不同是全工作量下,如果SQL訪問顧問發現已存在的物化檢視和索引並沒有有效地使用,那麼它會建議刪除它們。

 

典型地,SQL訪問顧問使用工作量作為所有分析的基礎。儘管工作量包含非常廣泛的語句,它還是仔細地根據特定統計資訊,業務重要性,或統計資訊和業務重要性的組合進行分等級。這個等級是很關鍵的,它可以使SQL訪問顧問先處理最重要的SQL語句,然後是那些業務影響更小的語句。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2071826/,如需轉載,請註明出處,否則將追究法律責任。

相關文章