條帶化技術核心原理
條帶化 將連續資料切割成固定大小的區塊,輪流分散到多顆實體磁碟。核心優勢:
- 單一邏輯 I/O 請求可並行發送至多顆磁碟,消除磁碟爭用。
- 循序掃描 (全表掃描、索引掃描) 獲得最大 I/O 平行度。
- 無需 DBA 手工規劃資料檔案分佈,自動達成負載均衡。
關鍵參數定義
| 參數 | 定義 | 典型範圍 (資料庫) |
| Stripe Depth (條帶深度/單元大小) | 單一磁碟上連續資料塊大小 | 256 KB ~ 1 MB |
| Stripe Width (條帶寬度/磁碟數) | 參與條帶化的實體磁碟數量 | Depth × Width ≥ 邏輯 I/O 大小 |
DB2 參數與條帶化的黃金匹配法則
1. 頁面大小 - 建庫時固定,表空間可覆寫
- OLTP:大量小型並發 I/O → 採用 粗粒度條帶,Depth = N × Page Size (N≥2),單顆磁碟服務多個邏輯 I/O,極大化吞吐。
- DSS/倉儲:大型循序 I/O、低並發 → 採用 細粒度條帶,Depth = Page Size,單一邏輯 I/O 橫跨多磁碟,均衡負載。
2. Prefetch Size (預讀大小) - 異步 I/O 基本單位
- 必須為 Stripe Depth 的整數倍。
- 最佳:Prefetch Size = Stripe Depth × Stripe Width 的整數倍,確保預讀 I/O 完美落在條帶邊界,均勻分佈所有磁碟。
- 受
EXTENTSIZE、容器數量、PAGESIZE 共同制約。
3. 容器佈局建議
- LVM 動態擴充:可將所有 PV 歸入單一 VG,簡化管理。
- 若 Stripe Width 較小,需依表空間 I/O 負載手工將容器分散到不同 LV/VG。
AIX LVM 層面條帶化配置
LTG (Logical Track Group) - 作業系統最大 I/O 單位
- AIX 5.3+ 透過
varyonvg -M 512K vgname 線上調整,範圍 4K~128M。
- LTG ≥ Stripe Depth,且為其整數倍,避免邏輯 I/O 被 OS 二次切割造成額外磁碟尋軌。
LVM 邏輯卷條帶化
mklv -S Depth -u Width vgname LVname Partitions PVlist
- OS 層條帶深度建議 = 儲存層條帶深度 × 儲存層條帶寬度,達成雙層完美對齊。
- 原則:OS Stripe Unit 為硬體 Stripe Unit 整數倍;OS Stripe Width 較小;結合應用讀寫模式 (隨機 vs 循序)。
雙層條帶化 (OS + Storage) 是否必要?
- 若 OS 層多 PV 對應儲存層不同磁碟群 → 顯著提升平行度,建議啟用。
- 若多 PV 映射同一組實體磁碟 → 增加複雜度無效能增益,建議單層 (僅儲存層)。
完整參數對齊檢查清單
- DB2 Page Size ↔ Table Space Extent Size ↔ Prefetch Size
- Prefetch Size = N × Stripe Depth (Storage)
- Prefetch Size = M × (Stripe Depth × Stripe Width) (Storage)
- AIX LTG = Stripe Depth (Storage) 或其整數倍
- LVM Stripe Depth = Stripe Depth (Storage) × Stripe Width (Storage) (若雙層)
- LVM Stripe Width ≤ 實體磁碟群數量
總結
條帶化仍是零成本提升 I/O 效能的最強槓桿。成功關鍵在於「從應用層 (DB2 Prefetch) 到 OS 層 (LTG/LVM) 再到儲存層 (RAID) 的參數完美對齊」。任何一層錯位都會導致 I/O 切割、額外尋軌、平行度損失。建議新建環境先做參數規劃矩陣,上線前用 iostat -x、db2pd -tablespaces 驗證 I/O 分佈均勻度。
- 上一篇文章: Oracle、DB2、SQL Server 三大資料庫表空間大小查詢實戰指南
- 下一篇文章: DB2 效能調優四大核心支柱:Bufferpool、SQL、Lock、Sortheap 實戰優化指南
Copyright ©
程式碼之家 All Rights Reserved