亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

如何理解DB2 中列組統計信息
2007-08-13   IT專家網社區

DB2 SQL 優化器(后文簡稱為優化器)可以估計每個備選訪問計劃的執行成本,并根據其估計結果選擇一個最佳訪問計劃。一個訪問計劃可以指定用來解析一條 SQL 語句的操作次序。

  為正確地確定每種訪問計劃的成本,DB2 優化器需要準確的基數估計值?;鶖倒烙嬍沁@樣一種過程:在應用了謂詞或執行了聚集之后,優化器使用統計信息確定部分查詢結果的大小。對于訪問計劃的每個操作符,優化器將估計該操作符的基數輸出。一個或更多謂詞的應用可以減少輸出流基數。

  在計算謂詞對于基數估計值的組合過濾效果時,通常會假設這些謂詞彼此之間是獨立的。然而,這些謂詞可以在統計方面彼此關聯。單獨地處理它們通常會導致優化器低估基數值。而基數值的低估又會導致優化器選擇一個次優的訪問計劃。

  對于至少應用了至少兩個本地等式謂詞的 SQL 語句,優化器將考慮使用多列統計信息來檢測統計關聯,并更加準確地估計多個謂詞組合的過濾效果。同樣對于連接兩個或更多表的 SQL 語句,以及在一對表間至少使用了兩個等式連接謂詞的連接,優化器也會使用多列統計信息。

  一個本地等式謂詞是一個應用于單個表的等式謂詞,其描述如下所示:

  COLUMN = literal

  其中 literal 可以是以下任一內容:

  •   一個常量值;
  •   一個參數標記或一個主變量;
  •   一個專用寄存器(例如,CURRENT DATE)

  一個等式連接謂詞的描述如下所示,它用于表 1 和表 2 間的連接:

  T1.COLUMN = T2.COLUMN

  DB2 V8.2 使用下面的多列統計信息:

  •   索引 keycard 統計信息:FIRST2KEYCARD、FIRST3KEYCARD、FIRST4KEYCARD 和 FULLKEYCARD
  •   列組統計信息:列組基數值

  這些統計信息描述了包含兩個或更多列的列集中不同分組的數量。

  在 DB2 V8.2 出現之前,只能使用索引 keycard 統計信息,并且要受下列條件約束:

  •   索引必須是完全限定的。如果鍵中的所有列都可以被等式謂詞 引用(連接謂詞或本地謂詞,但不是兩者的混合),那么這個索引就是完全限定的。
  •   對于連接謂詞,索引也必須是惟一的。

  在 DB2 V8.2 中,通過考慮到所有索引 keycard 統計信息而不要求索引完全限定,DB2 SQL 優化器進一步擴展了多列統計信息的使用。它還考慮到了用戶收集的任何列組統計信息。本文討論了優化器如何利用這些統計信息,以及用戶如何識別要收集的列組統計信息。

多個本地等式謂詞的統計相關性

  DB2 SQL 優化器試圖檢測多個本地等式謂詞間的統計相關性。

  示例 1:假設有一個表 SHOW_LISTINGS,它包含如下列:

  表 1. SHOW_LISTINGS 表的描述

列名 描述
SHOW_ID 表外鍵,包含關于各演出清單的信息
CHANNEL_ID 表外鍵,包含關于播放演出的每個頻道的信息
STATION_ID 表外鍵,包含和頻道相關的每個電視臺的信息
CITY_ID 表外鍵,包含關于上演該演出的每個城市的信息
DAY 演出播放的日期
TIME 演出播放的當天的時間
<other columns> 描述了演出清單的其他屬性

  由于演出只在某個電視臺的某個頻道播出,在一天的特定時間內,這些列(SHOW_ID,CHANNEL_ID,STATION_ID 和 TIME)彼此之間不是互相獨立的。DAY 列獨立于 TIME 列,但是它不獨立于所有演出清單的 SHOW_ID。

  設想一條應用了以下謂詞的 SQL 語句:

  P1: SHOW_ID = ?
  P2: CHANNEL_ID = ?
  P3: STATION_ID = ?
  P4: TIME = ?

  如果存在這樣一個索引,其中的鍵包含謂詞 P1-P4 引用的所有列,或者鍵中的前四列包含所引用的列,優化器將使用 FIRST4KEYCARD 索引統計信息(如果收集了索引統計信息的話),來檢測謂詞 P1-P4 之間的統計相關性。在應用了這四個謂詞之后,優化器將計算一個更準確的基數估計值。例如,下面的任何一個索引可以用來檢測這四個謂詞間的統計相關性:

  IX1 ON SHOW_LISTINGS(SHOW_ID, CHANNEL_ID, STATION_ID, TIME)
  IX2 ON SHOW_LISTINGS(SHOW_ID, CHANNEL_ID, STATION_ID, TIME, CITY_ID)
  IX3 ON SHOW_LISTINGS(SHOW_ID, CHANNEL_ID, STATION_ID, TIME, DAY, CITY_ID)

  優化器使用 IX1 的 FULLKEYCARD 和 FIRST4KEYCARD 統計信息來檢測所有四個謂詞的相關性。類似地,它也可以使用 IX2 和 IX3 的 FIRST4KEYCARD。

  不能使用如下所示的索引:

  IX4 ON SHOW_LISTINGS(CITY_ID, SHOW_ID, CHANNEL_ID, STATION_ID, TIME)

  由于每個 keycard 統計信息都將包含 CITY_ID 列,因此該列上未定義本地等式謂詞。

……

熱詞搜索:

上一篇:IBM DB2商業智能軟件介紹
下一篇:Windows的公鑰基礎結構(PKI)增強功能1

分享到: 收藏