"Partitioning"
- 1.19 資料表長期成長的成本:查詢讀的量、列表的部分索引、查詢以外的成本、分割與唯一約束、批次資料的共用欄位
哪些表會隨營運年數一直變大、怎麼判斷一條查詢讀的量跟著回傳筆數還是跟著表的大小、列表排除大宗資料時排除條件與索引的位置、表變大之後在查詢以外增加的成本與該量的指標、依時間分割與唯一約束的衝突,以及同一批建立的資料共用欄位的存放位置;附 PostgreSQL 17 的實測
- MySQL Partitioning:partition lifecycle 五段、跟 Vitess sharding 不同的「同 instance 內水平切割」
MySQL native partitioning 是 *同一個 MySQL instance 內的水平切割*、不是 Vitess sharding(跨 instance)。本文走 partition lifecycle 五段(design → create → query → maintenance → drop)、4 種 partition type(RANGE / LIST / HASH / KEY + COLUMNS / sub-partitioning)的 trade-off、partition pruning 怎麼運作、5 production 踩雷(PK 必須含 partition key / global index 沒原生 / partition exchange 細節 / orphan partition / cross-partition query 慢)、跟 PG declarative-partitioning 對比
- PostgreSQL declarative partitioning:planner pruning、maintenance scope 與 partition key 選法
Declarative partitioning 的真實價值是 query planner pruning + maintenance scope 縮小、不是「把大表切小」;RANGE / LIST / HASH 取捨、partition key 選法、5 個 production 踩雷(key 選錯不 prune / unique 不 enforce 跨 partition / ATTACH 鎖太久 / partition 數爆 / DETACH 不 reclaim 空間)、跟 autovacuum + index 設計整合
- PostgreSQL pg_partman Advanced
PostgreSQL pg_partman 自動分區、premake、retention、maintenance job、partition migration 與 runbook