关于pg_toast表的查询、回收清理、重新排列及修改存储参数

网上有很多pg_toast的原理的文章了,但好像还是缺少pg_toast表的查询、回收清理、重新排列及修改存储参数部分的内容,我做下补充,各位如有补充或者指正,还望不吝赐教。

通过以下sql查询pg_toast占用空间:

SELECT relname, relpages
FROM pg_class
WHERE relname LIKE 'pg_toast%';

relpages字段的单位是“页”,默认情况下一页即8KB,除非进行了修改。如果查询出来是100,那就是100*8=800kb。


VACUUM命令清除表中所有不再使用的数据:

--操作前请备份数据库
VACUUM (FULL);
--清除指定表中不再使用的数据
VACUUM (FULL) table_name;

CLUSTER命令重新排列表中的数据:

--操作前请备份数据库
CLUSTER table_name;

因为pg_toast 是系统表,不能直接操作,所以要重新排列pg_toast中的数据,需要重新排列相应的主表。


ALTER TABLE命令修改表的toast_tuple_target值:

--操作前请备份数据库
ALTER TABLE table_name SET (toast_tuple_target = 8192);

这条命令将修改表的最大存储参数,8192字节即8KB,如果数据大于8KB将存储在pg_toast中,默认情况下toast_tuple_target就是8KB;修改toast_tuple_target的值需要特别小心, 因为这会影响到pg_toast的存储空间的使用, 如果设置的值过小可能导致数据更多的存储在pg_toast中,而过大则会导致pg_toast空间浪费

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值