成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2 優化器中正確使用分布統計信息如何操作?

數據庫
此文主要向大家講述的是在 DB2 優化器中正確使用分布統計信息的操作步驟,以及對其在實際操作中所涉及到的細節的描述。

我們今天主要向大家講述的是在 DB2 優化器中正確使用分布統計信息的操作步驟,我們大家都知道DB2 優化器是一種基于成本的優化器。它根據表和索引的相關統計信息作出決策。DB2 在生成統計信息時。

不但能提供基本統計信息,還允許創建所謂的分布統計信息。本文解釋什么是分布統計信息、分布統計信息在哪些情況下尤為重要,以及應用程序開發人員應該考慮些什么,才能使 DB2 優化器創建有效的訪問計劃。

簡介

為了執行查詢或 DML 語句(INSERT、UPDATE、DELETE),DB2 必須創建一個訪問計劃(access plan)。訪問計劃定義按什么順序訪問表,使用哪些索引,以及用何種連接(join)方法來關聯數據。好的訪問計劃對于 SQL 語句的快速執行至關重要。DB2 優化器可以創建訪問計劃。這是一種基于成本的優化器,這意味著它是根據表和索引的相關統計信息來作出決策的。

DB2 在生成統計信息時,不但能提供基本統計信息,還允許創建所謂的分布統計信息。不但數據庫管理員要理解分布統計信息,而且應用程序開發人員也要理解分布統計信息。應用程序開發人員必須小心謹慎,因為在某些情況下分布統計信息對于 DB2 優化器來說非常重要。

主變量或參數標記(在 Java 中為 java.sql.PreparedStatement)的使用可能會造成阻礙,使優化器無法***限度地利用分布統計信息。本文解釋什么是分布統計信息、分布統計信息在哪些情況下尤為重要,以及應用程序開發人員應該考慮些什么,才能使 DB2 優化器創建有效的訪問計劃。

基本統計信息和分布統計信息

在研究分布統計信息之前,我們先來看看基本統計信息,只要執行 RUNSTATS 即可收集這些表的相關統計信息。

表的相關統計信息:

當前使用的頁面數

包含記錄行的頁面數

 

溢出的行數

 

表中的行數(基數)

 

對于 MDC 表,還有包含數據的塊(block)數

 

表中各列的相關統計信息:

 

列的基數

列的平均長度

 

列中第二大的值

 

列中第二小的值

 

列中 NULL 值的個數

 

通常,執行 RUNSTATS 時,不但可以收集到關于表的統計信息,而且還可以收集到相應的索引的相關統計信息。要了解為索引而收集的統計信息,請參閱 DB2 Administration Guide: Performance - Statistical information that is collected。

 

觀察一個表的基本統計信息,您可以看到,DB2 優化器知道一個表由多少行組成(表的基數),以及一個列包含多少個不同的值(列的基數)。但是,還有一些信息是基本統計信息無法提供的。例如,基本統計信息不能告訴優化器一個列中某些值出現的頻率。假設表 TABLE_X 有大約 1,000,000 行,在該表上執行這樣一條查詢:

SELECT * FROM TABLE_X WHERE COLUMN_Y = 'VALUE_Z'

難道 DB2 優化器知道 TABLE_X 中有多少行滿足條件 COLUMN_Y = 'VALUE_Z' 不重要嗎?換句話說:知道這個查詢將返回 1 行、100 行、1000 行還是 10000 行有什么不好呢?

實際上,通過基本統計信息,DB2 優化器只能估計 'VALUE_Z' 在 COLUMN_Y 中出現的頻率。在這種情況下,優化器認為所有值在 COLUMN_Y 中是平均分布的,這意味著它認為所有的值都有相同的出現頻率。如果事實碰巧如此,這樣估計并無大礙。但是,如果有些值比其他值出現得更頻繁一些(例如,如果 'VALUE_Z' 出現 900,000 次,即占所有行的 90%)。

那么優化器不能考慮到這一點,因而生成的訪問計劃就不是***的。而分布統計信息可以填補這一空白。分布統計信息可以提供關于數據出現頻率及其分布情況的信息,如果數據庫中存儲了很多重復值,并且數據在表中并非平均分布的時候,分布統計信息對于基本統計信息是一個重要的補充。

分布統計信息的類型 —— 頻率(frequency)統計信息和分位數(quantile)統計信息

有兩種不同類型的分布統計信息 —— 頻率統計信息和分位數統計信息。讓我們通過一個示例表來研究一下這兩種不同類型的分布統計信息。

示例表 “CARS” 表示一家汽車制造商,對于生產的每一輛汽車,在表中都有相應的一行。每輛汽車可以由它的 ID 來標識,因此 “ID” 是表 “CARS” 的主鍵(PK)。此外,表中有一個 “STATE” 列,表明汽車當前處在制造流程中的哪一步。

一輛汽車的制造流程從第 1 步開始,然后是第 2 步、第 3 步,...、第 49 步、第 50 步、第 51 步、...、第 98 步、第 99 步,一直到第 100 步 —— 第 100 步意味著汽車已經完工了。已完工的汽車所對應的行仍然保留在表中,后續流程(例如投訴管理、質量保證等)仍要用到這些行。

汽車制造商生產 10 種不同型號(“TYPE” 列)的汽車。為了簡化問題,在這個示例表中,各種汽車型號命名為 A、B、C、D、...、J。除主鍵索引(在 “ID” 列上)之外,“STATE” 列上也有一個索引(“I_STATE”),在 “TYPE” 列上還有一個索引(“I_TYPE”)。實際上,一個 “CARS” 表包含的列遠不止 “ID”、“STATE” 和 “TYPE”。為簡單起見,示例表中沒有出現其他這些列。

頻率統計信息

假設表 CARS 現在有大約 1,000,000 條記錄,不同的型號在表中出現的頻率如下所示:

表 1. 表 CARS 中 TYPE 列的頻率統計信息

 

  1. TYPE COUNT(TYPE)   
  2. A 506135   
  3. B 301985   
  4. C 104105   
  5. D 52492   
  6. E 19584   
  7. F 10123   
  8. G 4876   
  9. H 4589   
  10. I 4403   
  11. J 3727  

 

型號為 A 的汽車最受購買者的青睞,因此生產的汽車中大約有 50% 是這種型號。型號 B 和型號 C 僅次于型號 A ,分別占所有汽車的 30% 和 10%。其他所有型號加在一起僅占 10%。

上面的表顯示了 “TYPE” 列的頻率統計信息。通過基本統計信息,DB2 優化器只能了解到該表包含 1,000,000 行(表的基數)和 10 種不同的值(型號),即 A 到 J。如果沒有分布統計信息,優化器會認為每種值以相同的頻率出現,大約都是出現 100,000 次。而一旦生成了關于 “TYPE” 列的分布統計信息,優化器即可了解每種型號真正的出現頻率。因此,優化器清楚各種已有型號出現的不同頻率。

優化器使用頻率統計信息來計算用于檢查相等或不等的謂詞的過濾因子。例如:

  1. SELECT * FROM CARS WHERE TYPE = 'H'  

分位數統計信息

與頻率統計信息不同,分位數統計信息與不同值的出現頻率無關,而與一個表中有多少行小于或大于某個值(或者有多少行介于兩個值之間)相關。分位數統計信息提供關于一個列中的值是否聚合的信息。為獲得這樣的信息,DB2 假定列中的值是按升序排列的,并根據正則行間隔確定相應的值。

我們來看看表 CARS 中的 “STATE” 列,該列按升序排列。根據正則行間隔,即可確定 “STATE” 的對應值。

表 2. CARS 表中 STATE 列的分位數統計信息

 

  1. COUNT(row) STATE ASC   
  2. 5479 1   
  3. 54948 10   
  4. 109990 21   
  5. 159885 31   
  6. 215050 42   
  7. 265251 52   
  8. 320167 63   
  9. 370057 73   
  10. 424872 84   
  11. 475087 94   
  12. 504298 100   
  13. ... 100   
  14. 1012019 100  

由于已完工的汽車仍然沒有從表中刪除,因此狀態為 100 (=完工)的汽車數量比所有處于其他狀態的汽車總和還多。已完工的汽車占表中所有記錄的 50%。

注意: 在實際情況下,已完工的汽車數量甚至還要更多(例如超過 99%)。在后文中的具體例子中可看到這種情況。

上表顯示了 “STATE” 列的分位數統計信息。有了這種關于有多少行分別小于和大于確定值的信息,DB2 優化器即可計算出用于測試小于(小于等于)、大于(大于等于)或介于兩值之間的謂詞的過濾因子。例如:

  1. SELECT * FROM CARS WHERE STATE < 100   
  2. SELECT * FROM CARS WHERE STATE BETWEEN 50 AND 70   

根據已有的分位數統計信息計算出來的過濾因子不是很精確,但即使只收集 20 個值,其誤差仍然低于 5%。

完整內容的學習,請訪問:

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0606fechner/

【編輯推薦】

  1. DB2數據庫物化視圖之MQT物化查詢表如何操作?
  2. DB2 9.5分區管理以及其應用實踐的詳細描述
  3. DB2數據庫在創建存儲過程中有哪些錯誤出現?
  4. DB2 CMO安裝7.1.2.6補丁之后會出現什么?
  5. IBM DB2中新手要了解的東西有哪些?
責任編輯:佚名 來源: 機械工業出版社
相關推薦

2010-08-13 14:32:13

DB2 優化器

2010-08-19 14:54:07

DB2 優化器

2009-07-22 09:01:54

導出LOB數據DB2

2010-08-20 10:18:32

DB2自動增長主鍵

2010-09-01 10:38:47

DB2統計信息

2011-03-14 16:42:54

DB2 UDB監控死鎖

2010-08-13 10:50:15

DB2取得當前時間

2010-08-04 10:03:37

DB2 9 分布式管理

2010-09-07 16:11:19

執行DB2命令

2015-10-23 16:35:11

DB2導出LOB

2010-07-30 15:44:04

DB2數據庫

2010-08-20 09:44:51

DB2確定某個表

2010-08-10 15:42:31

DB2 back 存檔

2010-08-20 09:44:51

DB2確定某個表

2010-08-20 09:44:51

DB2確定某個表

2010-08-18 15:14:08

DB2恢復命令

2010-08-18 16:45:40

IBM DB2 Cat

2010-08-17 09:11:42

DB2數據庫備份性能

2010-08-05 15:40:07

DB2快照函數

2010-08-02 17:30:30

DB2鎖等待
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线看片网站 | 久久久av | 亚洲精品乱码久久久久久按摩 | 综合久久综合久久 | 一区二区三区精品在线视频 | 久久国产精品视频 | 午夜精品影院 | 热99精品视频 | 97高清国语自产拍 | 国产精品一卡二卡三卡 | 国产精品一区二区久久 | 亚洲三级国产 | 欧美一区二区免费 | 一区二区三区中文字幕 | 成人黄色在线 | 欧美乱人伦视频 | 亚洲天堂久久新 | 正在播放一区二区 | 国产精品视频 | 日本不卡一区 | 婷婷激情五月网 | 在线观看国产精品视频 | 伊人av在线播放 | 在线视频一区二区三区 | 国产精品久久久久久久久久久久 | 99久久精品国产一区二区三区 | 免费一区二区三区在线视频 | 国产精品久久 | 成人在线视频网 | 久久91av | 精品1区| 逼逼网 | 日韩和的一区二区 | 亚洲精品一区二三区不卡 | 国产成人免费 | 做a视频| 午夜国产一级片 | 欧美亚洲视频 | 夜夜骑首页 | 国产91精品久久久久久久网曝门 | 久久久精品一区 |