dbms_stats能良好地估計統計數據(尤其是針對較大的分區表),並能獲得更好的統計結果,最終制定出速度更快的SQL執行計劃。
exec dbms_stats.gather_schema_stats(
ownname => ‘SCOTT’,
options => ‘GATHER AUTO’,
estimate_percent => dbms_stats.auto_sample_size,
method_opt => ‘for all columns size repeat’,
degree => 15
) 為了充分認識dbms_stats的好處,需要仔細體會每壹條主要的預編譯指令(directive)。下面讓我們研究每壹條指令,並體會如何用它為基於代價的SQL優化器收集最高質量的統計數據。
options參數
使用4個預設的方法之壹,這個選項能控制Oracle統計的刷新方式:
gather——重新分析整個架構(Schema)。
gather empty——只分析目前還沒有統計的表。
gather stale——只重新分析修改量超過10%的表(這些修改包括插入、更新和刪除)。
gather auto——重新分析當前沒有統計的對象,以及統計數據過期(變臟)的對象。註意,使用gather auto類似於組合使用gather stale和gather empty。
註意,無論gather stale還是gather auto,都要求進行監視。如果妳執行壹個alter table xxx monitoring命令,Oracle會用dba_tab_modifications視圖來跟蹤發生變動的表。這樣壹來,妳就確切地知道,自從上壹次分析統計數據以來,發生了多少次插入、更新和刪除操作。
estimate_percent選項
estimate_percent參數是壹種比較新的設計,它允許Oracle的dbms_stats在收集統計數據時,自動估計要采樣的壹個segment的最佳百分比:
estimate_percent => dbms_stats.auto_sample_size
要驗證自動統計采樣的準確性,妳可檢視dba_tables sample_size列。壹個有趣的地方是,在使用自動采樣時,Oracle會為壹個樣本尺寸選擇5到20的百分比。記住,統計數據質量越好,CBO做出的決定越好。
method_opt選項
method_opt:for table –只統計表
for all indexed columns –只統計有索引的表列
for all indexes –只分析統計相關索引
for all columns
dbms_stats的method_opt參數尤其適合在表和索引數據發生變化時刷新統計數據。method_opt參數也適合用於判斷哪些列需要直方圖(histograms)。
某些情況下,索引內的各個值的分布會影響CBO是使用壹個索引還是執行壹次全表掃描的決策。例如,假如在where子句中指定的值的數量不對稱,全表掃描就顯得比索引訪問更經濟。
如果妳有壹個高度傾斜的索引(某些值的行數不對稱),就可創建Oracle直方圖統計。但在現實世界中,出現這種情況的機率相當小。使用CBO時,最常見的錯誤之壹就是在CBO統計中不必要地引入直方圖。根據經驗,只有在列值要求必須修改執行計劃時,才應使用直方圖。
為了智能地生成直方圖,Oracle為dbms_stats準備了method_opt參數。在method_opt子句中,還有壹些重要的新選項,包括skewonly,repeat和auto:
method_opt=>’for all columns size skewonly’
method_opt=>’for all columns size repeat’
method_opt=>’for all columns size auto’
skewonly選項會耗費大量處理時間,因為它要檢查每個索引中的每個列的值的分布情況。
假如dbms_stat發現壹個索引的各個列分布得不均勻,就會為那個索引創建直方圖,幫助基於代價的SQL優化器決定是進行索引訪問,還是進行全表掃描訪問。例如,在壹個索引中,假定有壹個列在50%的行中,如清單B所示,那麽為了檢索這些行,全表掃描的速度會快於索引掃描。
–*************************************************************
– SKEWONLY option—Detailed analysis
–
– Use this method for a first-time analysis for skewed indexes
– This runs a long time because all indexes are examined
–*************************************************************
begin
dbms_stats.gather_schema_stats(
ownname => ‘SCOTT’,
estimate_percent => dbms_stats.auto_sample_size,
method_opt => ‘for all columns size skewonly’,
degree => 7
);
end;
重新分析統計數據時,使用repeat選項,重新分析任務所消耗的資源就會少壹些。使用repeat選項(清單C)時,只會為現有的直方圖重新分析索引,不再搜索其他直方圖機會。定期重新分析統計數據時,妳應該采取這種方式。
–**************************************************************
– REPEAT OPTION – Only reanalyze histograms for indexes
– that have histograms
–
– Following the initial analysis, the weekly analysis
– job will use the “repeat” option. The repeat option
– tells dbms_stats that no indexes have changed, and
– it will only reanalyze histograms for
– indexes that have histograms.
–**************************************************************
begin
dbms_stats.gather_schema_stats(
ownname => ‘SCOTT’,
estimate_percent => dbms_stats.auto_sample_size,
method_opt => ‘for all columns size repeat’,
degree => 7
);
end;
為了達到Administration of Symantec Enterprise Vault 9 for Exchange水準認證,考生必須通過250-309考試,要求考生在105分鐘內完成70至80道考題,達到76%就可以通過考試。考生可以選擇英語,日語作為250-309考試語種。該考試是一個技術類考試,Administration of Symantec Enterprise Vault 9 for Exchange 250-309考試成功驗證了考生對產品的技能知識的熟悉程度,管理Symantec Enterprise Vault9交易等技能。 Continue reading
KillTest 000-170認證考試學習資料幫助考生成功通過IBM BPM Blueprint; WebSphere Lombardi Edition V7.1考試。要獲取BPM Blueprint; WebSphere Lombardi Edition V7.1證書需要考生參加000-170考試。要求考生必須在75分鐘內完成40道考題,達到70%就可以獲取證書。建議考生選擇英語為該考試語種,000-170考試隸屬於IBM Certified Associate BPM Analyst認證體系。 Continue reading
Cisco Certified Design Professional (CCDP) 是Cisco認證系列中另一張較高級的證書,CCDP認證主要提供網路規劃人員在今日快速變動的網路環境中獲得Cisco網路設備所需的專業知識。持有CCDP 認證表示您有能力設計包含100到500個節點以上的路由和切換式網路。考取CCDP考試必須具備CCNA或CCDA證照。該認證考試科目是ARCH 642-874,ROUTE 642-813,SWITCH 642-902考試。獲取CCDP認證人士必須能夠運用所學習得到的網路知識,對網路設備的安裝、配置和操作技巧各方面都能完全掌握,然後再憑經驗,對複雜的LAN、WAN 和交換式區域網路而進行設計和規劃。 Continue reading