首先:
升级
即使您不能升级到 8.2、8.3 或 8.4 - 至少升级到最新的 8.1(目前是 8.1.17,但将在 1-2 天内升级到 8.1.18)。
第二:诊断问题所在。
使用du 工具来诊断空间的具体去向。哪个目录占用太多空间?
用df检查总已用空间,然后检查有多少是PostgreSQL目录。
最好的选择是:
cd YOUR_PGDATA_DIR
du -sk *
cd base
du -sk *
cd LARGEST DIR FROM PREVIOUS COMMAND
du -sk * | sort -nr | head
现在,您知道 PGDATA 中的哪个目录正在使用空间,您可以做一些事情。
如果是日志或 pg_temp - 重新启动 pg 或删除日志(pg_clog 和 pg_xlog 不是这个词的常见含义的日志,永远不要从那里删除任何内容!)。
如果它在你的基本目录中,那么:
基本目录中的数字目录与数据库相关。您可以通过以下方式进行检查:
select oid, datname from pg_database;
当您知道正在使用大部分空间的数据库时,连接到它并检查哪些文件使用了大部分空间。
文件名将是带有可选“.digits”后缀的数字 - 此后缀(目前)无关紧要,您可以通过发出以下命令来检查文件的确切含义:
select relname from pg_class where relfilenode = <NUMBER_FROM_FILE_NAME>;
一旦您知道哪些表/索引占用了大部分空间 - 您可以 VACUUM FULL 它,或者(更好)对它们发出 CLUSTER 命令。