PostgreSQL 磁盘空间清理

当PostgreSQL中的历史数据积累过多,可能导致磁盘空间不足。为解决此问题,可以定期通过查询找出占用空间大的表,并执行vacuumfull指令进行清理。查询方法包括使用SQL找出前100个占用空间最大的表,然后针对这些表逐一执行vacuumfull操作,例如vacuumfull schema1.test_table_1。这有助于维护数据库效率和磁盘空间管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

PostgreSQL 删除、更新、覆写的历史数据不会从磁盘中清除,久而久之,磁盘的数据越来越多造成空间不足。

解决方案

定期找到空间占用大的表,然后执行 vacuum full 指令。

1. 查找空间占用最大的100张表
 SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(pg_total_relation_size('"' 
    || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables 
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC limit 100
2. 执行 vacuum full

vacuum full [schema].[table]

vacuum full schema1.test_table_1

注意:这里仅拿一张表为例,实际需要对第一步查询出来的所有表执行 vacuum full

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修破立生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值