選擇 MPP 資料庫中表格的雜湊分佈索引鍵
選擇有效的雜湊分佈索引鍵時,需要檢查表格定義以及任何針對表格發出的查詢。
開始之前
若要選擇有效的雜湊分佈索引鍵,您需要收集表格及表格使用方式的相關資訊:
- 表格定義 - 主要索引鍵、唯一索引鍵、產生的直欄、直欄資料類型
- 表格資料 - 相異值數目、值的分佈
- 針對表格發出的查詢 - 結合、相等述詞
關於這項作業
在 MPP 資料庫中,叢集的所有節點中的系統資源(記憶體、儲存體及處理器這類資源)都會分割成稱為資料截塊 的邏輯單元。當您使用雜湊分佈時,資料庫管理程式會跨資料截塊分散表格列中的資料,方法是將雜湊演算法套用至分佈索引鍵直欄中的值。
有效的雜湊分佈索引鍵可以透過兩種不同的方式來改善查詢效能:
-
將表格資料平均傳播到所有資料截塊
平均分佈可產生數個好處:- 盡量提高查詢處理的平行化
- 有效率地使用可用的儲存體空間
-
並置從不同表格一併提取的列
一併提取的列位於相同的資料截塊時,提取這些列所需的時間量會減少。
一般而言,設定平均分佈的優先順序高於列並置。
若為較小的表格,份佈索引鍵對查詢效能的影響較小。若為較大的表格,分佈索引鍵會大幅影響查詢效能。
程序
請考慮使用表格的所有直欄作為分佈索引鍵的候選項目,並根據下列四個準則來排除直欄或選擇直欄:
範例
CREATE TABLE EMPLOYEE
(
ID INT NOT NULL,
NAME VARCHAR(250) NOT NULL,
RESUME CLOB,
HIRE_DATE DATE,
IS_MANAGER CHAR(1),
OFFICE_NUMBER INT
)
ORGANIZE BY ROW其他資訊:
- IS_MANAGER 直欄的值只能是 'Y' 或 'N'。
- 經理需要對此表格及另一個表格(稱為 SALES)定期發出查詢,以產生每一位員工的總銷售報告:
... WHERE SALES.SALES_PERSON_ID = EMPLOYEE.ID ... - 公司成立只有 1 年,而且 50% 的員工都是在去年七月雇用。
您可以使用下列邏輯來選擇 EMPLOYEE 表格的雜湊分佈索引鍵:
| 準則 | 討論 | 直欄 |
|---|---|---|
| 表格定義 |
|
其餘的候選項目:
|
| 表格資料 |
|
其餘的候選項目:
|
| 查詢 |
|
建議:
其餘的候選項目:
|
| 一般 |
|
分佈索引鍵:( ID ) |