背景
1、産品的問題點
- PG 沒有全局索引
2、問題點背後涉及的技術原理
- PG的索引支援到表級别, 如果是分區表那麼每個分區建立對應索引, 不能針對分區表建立全局索引.
3、這個問題将影響哪些行業以及業務場景
- 使用了分區表, 且希望對非分區字段進行全局唯一限制的場景.
-
- 分區表隻能選擇一種分區鍵, 如果要限制唯一性, 必須包含分區鍵, 例如ID, 那麼可以設定ID唯一, 或者(ID, col1)唯一, 但是不能設定col1唯一.
- 使用了分區表, 并且在非分區字段有排序需求, 即使支援了merge sort還是覺得不夠的使用者. 必須最高速度從全局索引拿到結果.
4、會導緻什麼問題?
- 無法支援非分區字段進行全局唯一限制的場景.
- 對非分區字段排序, 即使每個分區上有對應索引, 也需要通路所有分區, 進行merge sort, 有一定性能影響.
5、業務上應該如何避免這個坑
- 基本無解, 除非不使用分區表.
6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題
7、資料庫未來産品疊代如何修複這個坑
- 希望核心層面支援分區表的全局索引