成人免费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自動增長主鍵

2011-03-14 16:42:54

DB2 UDB監控死鎖

2010-09-01 10:38:47

DB2統計信息

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-08-20 09:44:51

DB2確定某個表

2010-08-20 09:44:51

DB2確定某個表

2010-07-30 15:44:04

DB2數據庫

2010-08-20 09:44:51

DB2確定某個表

2010-08-18 15:14:08

DB2恢復命令

2010-08-10 15:42:31

DB2 back 存檔

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-05 11:29:04

java DB2
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女久久久久久久网站 | www久久国产 | 婷婷在线网站 | 国产不卡视频在线 | 三级高清| 99热热精品| 国产精品久久久久不卡 | 午夜影院在线播放 | 色吧色综合| 毛片视频免费观看 | 91av视频在线播放 | 日韩av黄色| h视频在线播放 | 欧美日韩亚洲一区 | 免费在线精品视频 | 九九色综合 | 成人永久免费 | 一区二区亚洲 | 久久高清 | 国产小视频在线 | 成人影院一区二区三区 | 久国产 | 日韩午夜影院 | 小草久久久久久久久爱六 | 久久久久成人精品 | 日韩av在线免费 | 国产一区高清 | 精彩视频一区二区三区 | 亚洲午夜av久久乱码 | 日韩三级电影一区二区 | 国产成人在线播放 | 51ⅴ精品国产91久久久久久 | 99精品国产一区二区三区 | 久久精品小视频 | 在线不卡 | 美国av片在线观看 | 91色网站| 日本在线一区二区 | 伊人精品在线 | 日本中文字幕一区 | 亚洲一区二区精品视频在线观看 |