文档首页> 数据仓库服务 GaussDB(DWS)> 故障排除> 集群性能> Delete表数据后执行了VACUUM,但是空间并没有释放
更新时间:2023-12-29 GMT+08:00
分享

Delete表数据后执行了VACUUM,但是空间并没有释放

问题现象

Delete表数据后执行了VACUUM,但是存储空间并没有释放。

原因分析

  • 执行VACUUM时,对某些表可能没有权限,或者数据库本身并没有太多的数据膨胀。
  • 执行VACUUM,默认清理当前用户在数据库中拥有权限的每一个表,没有权限的表则直接跳过回收操作。
  • 参数vacuum_defer_cleanup_age不是0,该参数在老版本默认为8000,表示最近8000个事务产生的脏数据不进行回收。
  • 为了保证事务可见性,产生脏数据的事务号,如果大于当前活跃的老事务号,则这部分脏数据也不会清理。

处理方法

  • 建议对单个表执行vacuum full命令,命令格式为“vacuum full 表名”。
  • 如果您对表没有权限,请联系数据库管理员或表的所有者进行处理。
  • 对于vacuum_defer_cleanup_age不是0的场景,可以将此参数改为0,取消vacuum的事务延迟。
  • 对于存在老事务的场景,重启集群再重新做vacuum full可以保证空间一定回收,否则只能等老事务结束再做vacuum full。
分享:

    相关文档

    相关产品