我有一个“小”问题。一个星期前,我的数据库达到满盘capasity。我删除了不同的表多行试图释放磁盘空间。至极后,我试图运行一个完整的真空至极没有完成。

我想知道的是。当我停止了从真空完全compliting它离开,我要删除manualy磁盘上的任何临时文件? 我现在有一个数据库至极处于100%的磁盘capasity,至极毋容置疑是一个大问题。

任何提示到的可用磁盘空间

我正在与SUSE一个postgres 8.1.4数据库。

有帮助吗?

解决方案

首先:

UPGRADE

即使你不能至8.2,8.3或8.4 - 至少升级到最新8.1(这是8.1.17在此刻,但将在8.1.18 1-2天)

二:诊断是什么问题。

使用工具来诊断确切的地方的空间去。什么目录占用太多空间?

请与 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>;

一旦你知道哪些表/索引使用的大部分空间 - 你可以完全真空,或者(更好的)问题的 CLUSTER 它们命令。

其他提示

在新的切线你的问题,你可以找到在数据库中的哪些是使用的查询。这可以帮助您找到考生截断收回足够的工作空间清理与删除信息的人。

请注意,删除大量的行但不吸尘足够频繁,以保持在检查磁盘空间往往会导致一种称为指数膨胀状态,其在真空FULL不会与所有的帮助。你会知道你在那里,当我提出的查询显示了大部分的空间都被索引,而不是常规表占用。你需要集群,需要尽可能多的可用磁盘空间作为表本身重建的一切,从这个问题中恢复过来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top