背景
1、産品的問題點
- PG 不支援線上split, merge分區
2、問題點背後涉及的技術原理
- 當單表的資料量較大時可能導緻一些問題: vacuum垃圾回收時間變長, 甚至可能急劇膨脹. 建立索引速度變慢. 邏輯備份時間變長. 資料檔案超過單個檔案系統大小. vacuum freeze耗時過長甚至發生事務回卷警告導緻資料庫無法啟動.
- PG 支援分區表, 通過分區把資料打散來規避以上問題.
- 非分區表如何轉換為分區表?
- 已有分區表分區不合理, 如何合并或分裂分區?
3、這個問題将影響哪些行業以及業務場景
- 資料量較大的行業, 例如時序、2C且注冊與活躍使用者較大的業務.
4、會導緻什麼問題?
- 不支援線上轉換的話, 需要停業務轉換, 影響線上業務.
5、業務上應該如何避免這個坑
- 使用pg_pathman插件管理分區表. 支援線上分區、合并、分裂.
- 《PostgreSQL hash分區表擴容、縮容(增加分區、減少分區、分區重分布、拆分區、合并分區), hash算法 hash_any, 混合hash MODULUS 分區 - attach , detach》
- 《PostgreSQL 14 preview - 分區表attach, detach分區支援無鎖(短暫鎖, concurrently) - 基于2階段routines管理》
6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題
- 管理成本增加
7、資料庫未來産品疊代如何修複這個坑
- 核心層支援線上split, merge分區文法.