【问题标题】:unable to recover disk space postgresql无法恢复磁盘空间 postgresql
【发布时间】:2016-02-08 23:40:36
【问题描述】:

系统是 FC21 和 Postgresql 9.3.9。集群有 6 个数据库,并在 pgsql 目录中使用 38 GB 的存储空间。最近删除了超过 20GB 的冗余数据。每个数据库都已使用“vacuum all”命令进行了两次清理,此外,整个集群已使用vacuumdb -a 命令进行了两次清理。全部运行成功。 Postgresql 已停止并重新启动。
为了验证,pg_dumpall 命令会创建一个 12GB 的文件。
一个数据库中的所有表都已删除:

选择 pg_size_pretty(pg_database_size('db'));

显示剩余 6GB 以上。 空间如何恢复?必须执行 pg_restore 来恢复空间似乎是不合理的。我已经阅读并重新阅读了“恢复磁盘空间”文档。

【问题讨论】:

    标签: postgresql disk diskspace


    【解决方案1】:

    VACUUM 命令只会回收表文件末尾的空间。你会想要VACUUM FULLvacuumdb -f

    您可能还想考虑reindexdb,因为所有这些行重写可能会使您的索引有点臃肿。

    【讨论】:

    • reindexvacuum full 之后不再需要,从 8.4 (?) 开始。它基本上在幕后做了一个cluster。此外,如果您打算使用vacuum full 并且希望将来重新添加数据,请考虑更改表和索引以设置较低的fillfactor,以便在整个过程中有空间添加数据。它可以以牺牲一些磁盘空间和读取性能为代价大幅提高写入性能。
    • 那行不通。数据库以 38GB 开始,以 38GB 结束。运行了很长时间,没有报错。 -v 选项显示大量活动,但没有回收空间。检查vacuumdb -afv 也以用户postgres 重新运行。
    • 你怎么知道你有空间可以回收?你是怎么衡量的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多