天天看點

【DB吐槽大會】第19期 - PG 沒有block level壓縮

背景

1、産品的問題點

  • PG 沒有block level壓縮

2、問題點背後涉及的技術原理

  • PG 隻有行級别壓縮, 當1條記錄壓縮後的長度超過1/4 block size(約2000位元組)(由參數 TOAST_TUPLE_THRESHOLD 控制門檻值) 時, PG 會将其變長字段類型存儲到TOAST切片.
  • 這種行級别的壓縮方式壓縮比較低

3、這個問題将影響哪些行業以及業務場景

  • 對存儲的成本較為敏感的業務, 例如IOT, 時序, 冷資料, 冷倉庫等.

4、會導緻什麼問題?

  • 壓縮比低, 需要使用更多的存儲空間, 導緻存儲成本較高

5、業務上應該如何避免這個坑

  • 更換産品,
  • 或使用FDW, 将資料存儲在外部, 例如OSS_FDW将資料存儲在OSS對象存儲内, 使用外部廉價、高壓縮比存儲.

6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題

  • 管理成本增加
  • 使用oss_fdw外部存儲, 不支援索引, 查詢速度更慢.

7、資料庫未來産品疊代如何修複這個坑

  • 核心層支援BLOCK級别的壓縮,
  • 使用壓縮效率、壓縮比更高的算法
  • 使用列存儲, 存儲同類的資料, 比行+塊級别壓縮比更高.

https://github.com/digoal/blog/blob/master/202109/20210902_07.md#postgresql-%E8%AE%B8%E6%84%BF%E9%93%BE%E6%8E%A5 https://github.com/digoal/blog/issues/76