You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TimescaleDB 1.1.1删除数据未释放空间,如何删除超表分块?

TimescaleDB 1.1.1 删除超表分块并释放磁盘空间方案

一、解决drop_chunks报错问题

TimescaleDB 1.1.1版本不支持新版的命名参数写法,必须使用位置参数,且表名需显式转换为regclass类型,修正后的执行语句如下:

-- 基础写法(默认schema)
SELECT drop_chunks('mydatatable'::regclass, INTERVAL '9 months');

-- 若表属于指定schema(如public)
SELECT drop_chunks('public.mydatatable'::regclass, INTERVAL '9 months');

执行后可通过以下语句验证分块是否被成功删除:

SELECT show_chunks('mydatatable');

二、释放DELETE操作残留的磁盘空间

你之前通过DELETE删除半数行,这类行级删除产生的死元组不会立即释放空间给操作系统,VACUUM ANALYZE仅清理死元组但不回收磁盘空间,需针对超表的每个分块执行VACUUM FULL:

  1. 查询当前超表的所有分块:
SELECT relname FROM pg_class WHERE relname LIKE 'mydatatable_%';
  1. 逐个对分块执行VACUUM FULL(替换示例中的分块名):
VACUUM FULL public.mydatatable_12345;

注意:VACUUM FULL会锁定目标分块表,建议在业务低峰期操作。

三、验证空间释放效果

执行完上述操作后,可通过以下方式确认磁盘空间是否释放:

  • 操作系统层面:执行df -h查看对应磁盘分区的使用情况
  • PostgreSQL层面:查询超表总占用空间
SELECT pg_size_pretty(pg_total_relation_size('mydatatable'));

内容的提问来源于stack exchange,提问作者WeSee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:56:50