| 概念 | 定義 | 角色 |
|---|---|---|
| 分區相容性 | 相同值經相同散列映射至相同分區 | 類型層面的基礎能力 |
| 表並置 | 相關表的相關列位於相同分區 | 物理層面的資料佈局 |
| 關係 | 分區相容性是並置的**必要條件**之一 | 相容 → 可並置 → 連接消除 |
DATABASE PARTITION GROUP (非再分配期)-- 1. 定義分區群組
CREATE DATABASE PARTITION GROUP PG_CORE ON DBPARTITIONNUMS (0 TO 7);
-- 2. 客戶表:以 CUST_ID (INT) 分區
CREATE TABLE CUSTOMERS (
CUST_ID INT NOT NULL,
NAME VARCHAR(100),
TIER CHAR(1)
) PARTITION BY HASH (CUST_ID) PARTITION GROUP PG_CORE;
-- 3. 訂單表:同樣以 CUST_ID 分區 → 與 CUSTOMERS 並置
CREATE TABLE ORDERS (
ORDER_ID BIGINT NOT NULL,
CUST_ID INT NOT NULL,
ORDER_TS TIMESTAMP,
TOTAL DECIMAL(12,2)
) PARTITION BY HASH (CUST_ID) PARTITION GROUP PG_CORE;
-- 4. 商品表:以 PROD_ID (BIGINT) 分區 → 與 ORDERS 不並置
CREATE TABLE PRODUCTS (
PROD_ID BIGINT NOT NULL,
NAME VARCHAR(200),
CATEGORY_ID INT
) PARTITION BY HASH (PROD_ID) PARTITION GROUP PG_CORE;
-- 5. 訂單明細:以 ORDER_ID 分區 → 與 ORDERS 並置 (同 ORDER_ID)
CREATE TABLE ORDER_ITEMS (
ORDER_ID BIGINT NOT NULL,
PROD_ID BIGINT NOT NULL,
QTY INT,
PRICE DECIMAL(10,2)
) PARTITION BY HASH (ORDER_ID) PARTITION GROUP PG_CORE;
| 查詢 | 連接類型 | 並置狀態 | 執行特徵 |
|---|---|---|---|
| 訂單-客戶 (CUST_ID) | 並置連接 | ✅ 並置 | 本地雜湊連接,無 SHIP,線性擴展 |
| 訂單-明細 (ORDER_ID) | 並置連接 | ✅ 並置 | 本地雜湊連接,無 SHIP |
| 明細-商品 (PROD_ID) | 非並置連接 | ❌ 不並置 | 含 SHIP 操作,資料移動至協調節點 |
| 訂單-商品 (無直接鍵) | 非並置連接 | ❌ 不並置 | 雙重 SHIP 或廣播,效能最差 |
CATEGORY_ID 分區 (若查詢常按類別過濾)REPLICATED MQT 或應用層快取-- 1. 並置率統計
SELECT
COUNT(*) AS TOTAL_JOINS,
SUM(CASE WHEN JOIN_TYPE = 'COLLOCATED' THEN 1 ELSE 0 END) AS COLLOCATED_JOINS
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-2));
-- 2. 資料移動量監控
SELECT
APPL_ID,
ROWS_READ, ROWS_RETURNED,
COMM_NETWORK_TIME, COMM_NETWORK_WAITS
FROM TABLE(MON_GET_APPLICATION(NULL, -2))
WHERE COMM_NETWORK_TIME > 1000;
REDISTRIBUTE)
分區相容性是「語言」,表並置是「架構」,連接消除是「效能」。三者合一,構建 DB2 DPF 極致效能的鐵三角。