在 Postgres 每個 Page 的儲存大小為 8kB,由於單筆資料 (tuple) 不允許跨 Page 儲存,當超過此大小限制時,則會壓縮後另外儲存,這塊空間被稱為 Toast。
在 PG 14 對 Toast 功能新增了 Lz4 演算法的支援,使用上對比於原本的 pglz 壓縮方式,在速度上還有佔用空間大小都有肉眼可見接近或超過十倍以上的改善。
想要確認是否有使用到 Toast 的功能可以用以下指令,確認目前 toast 的空間使用量。
select relnamespace::regnamespace, relname, reltoastrelid::regclass, pg_relation_size(reltoastrelid) as toast_size from pg_class where reltoastrelid != 0 and relnamespace::regnamespace::text = 'public' --指定 Schema 可選擇註解掉 order by toast_size desc limit 30;
參考資料:
https://www.postgresql.org/docs/current/storage-toast.html
https://www.dbi-services.com/blog/postgresql-14-lz4-compression-for-toast/