規模定性
11 億行在當前硬件下不算海量(單表幾百 GB)。單機 SSD + 足夠內存可直接全表掃描,若追求極致性能再考慮分庫分表。
物理存儲優化
- 分區表:按時間/業務鍵 Range/Hash 分區,將數據分散到多個 Tablespace(不同物理磁盤),並行 I/O。
- 索引與數據分離:索引放快速存儲(NVMe),數據放大容量 HDD。
- 壓縮:
COMPRESS FOR OLTP 或 Hybrid Columnar Compression (Exadata) 降低 I/O。
邏輯存儲設計
- 合理範式化/反範式化,避免過度 Join。
- 熱點列單獨建表(垂直拆分)。
查詢優化核心
- 全表掃描不可避免:若每次查 11 億行,無索引可用,只能堆硬件(並行查詢
PARALLEL、In-Memory Column Store)。
- 點查/範圍查:嚴格遵循 SARGable 原則,建立合適索引(B-tree、Bitmap、Composite),避免隱式轉換、函數包裹列。
- 分區裁剪:查詢條件包含分區鍵,自動跳過無關分區。
總結:11 億行首看「怎麼查」,再定存儲策略;盲目分庫分表反增維護負擔。