資料庫效能 80% 決定於開發早期的設計決策。本文針對 DB2 for z/OS (V7/V8) 環境,系統梳理邏輯/物理設計、表空間選型、分區策略、索引設計、緩衝池配置、並行處理等關鍵領域的效能準則,作為設計評審與效能基線建立的參考框架。
| 負載類型 | SQL 特徵 | 並發/量級 | 關鍵指標 | |
|---|---|---|---|---|
| 交易 | 簡單、短小 | 極高並發、毫秒級響應 | GETPAGE 率、緩衝池命中率、鎖等待 | |
| 查詢/決策支援 | 複雜、多表連接、排序 | 低並發、分鐘/小時級 | 掃描量、排序溢出、並行度 | |
| 批次/實用程式 | 大量連續處理 | 窗口內集中、資源佔用高 | 日誌量、I/O 頻寬、完成時間窗口 |
| 類型 | 容納表數 | 分區方式 | 適用場景 | 效能優勢 |
|---|---|---|---|---|
| 簡單 | 多表 | 無(頁級混存) | 極少用,不推薦 | — |
| 分段 | 多表 | 段(每段專屬一表) | 中小表、多表共存 | 鎖隔離、掃描只讀相關段、Drop/Truncate 即時釋放段、Mass Delete 高效 |
| 分區 | 單表 | 分區索引鍵範圍 | 大表、歷史資料、需並行 | 查詢/CP/Sysplex 並行、分區級實用程式並發、熱數據置快磁碟、滾入滾出 |
| LOB | 僅 LOB | — | BLOB/CLOB/DBCLOB | 大物件專用儲存 |
| 因素 | 有利於壓縮 | 不利於壓縮 |
|---|---|---|
| 列長度 | 短列、固定長度 | 接近頁面大小(無法多列/頁) |
| 表大小 | 大表(字典開銷可攤銷) | 極小表(字典 8-64KB 佔比大) |
| 資料模式 | 高重複字串、低基數 | 高熵、隨機、已加密/壓縮 |
| CPU 成本 | 硬體壓縮(zEDC)大幅降低 | 軟體模擬消耗高 |
| 字典品質 | REORG 採樣建字典 > LOAD 僅前 N 列 | — |
建議:大多數大表壓縮收益 > CPU 成本,優先啟用;使用 DSN1COMP 預估壓縮率。
PIECESIZE 拆分多資料集,並行掃描/建立。LOG NO + 載入成功後 立即映像拷貝。| 插入模式 | PCTFREE | FREEPAGE | REORG 頻率 |
|---|---|---|---|
| 唯讀 | 0 | 0 | 永不 |
| 隨機插入、低頻 | 預設 (表 5%, 索引 10%) | 0 | 監控 REORG 需求動態調整 |
| 隨機插入、高頻 | 大於預設 | 視列長度考慮 | 較頻繁 |
| 尾端插入、列長固定 | 0 | 0 | 永不(物理順序=叢集順序) |
| 尾端插入、可變長/壓縮 | 視監控 NEARINDREF/FARINDREF 調整 | — | 依趨勢 |
| 熱點插入(集中位置) | 大幅增加 | 考慮使用 | 嚴密監控、極頻繁 |
監控指標:SYSIBM.SYSTABLEPART.NEARINDREF、FARINDREF、REORG ... INDREFLIMIT REPORTONLY。
MATCHCOLS。PLAN_TABLE 無 SORT*)。INDEXONLY = Y,避免回表。CREATE INDEX ... PART ...),分區/索引/叢集糾纏。CREATE TABLE ... PARTITION BY ...),三者解耦,設計自由度大增。| 代數 | 特性 | 啟用條件 | 收益對象 |
|---|---|---|---|
| V3 查詢 I/O 並行 | 單查詢多 I/O 請求並發 | 分區表空間、DEGREE(ANY) | I/O 密集型查詢 |
| V4 CP 並行 | 單查詢多任務並行 | 分區表空間、DEGREE(ANY) | CPU 密集型查詢 |
| V5 Sysplex 查詢並行 | 跨成員多任務並行 | Data Sharing、DEGREE(ANY) | 大型唯讀查詢 |
MAX DEGREE 設合理上限(防虛擬儲存耗盡)。BIND PLAN/PACKAGE DEGREE(ANY) 或動態 SET CURRENT DEGREE = ANY。RUNSTATS 取得分區級統計。調大科學法:漸增 VPSIZE → 觀察 DASD I/O 持續下降、換頁率可接受 → 停止。
周詳的物理設計是效能的基石,必須在開發早期啟動。DB2 功能增強(V8 表控制分區、硬體壓縮、Sysplex 並行)與硬體演進(zEDC、SSD、大記憶體)持續改寫最佳實務邊界。保持學習、驗證、文檔化,讓設計決策經得起時間考驗。