jor*_*gen 0 postgresql diskspace vacuum
我有一个“小”问题。一周前,我的数据库已达到完整的磁盘容量。我删除了不同表中的许多行,以释放磁盘空间。至极后,我尝试运行完全真空至极并没有完成。
我想知道的是。当我停止完全压缩真空时,它是否在磁盘上留下了必须手动删除的任何临时文件?我现在有一个100%磁盘容量的数据库,不用说这是一个大问题。
有释放磁盘空间的提示吗?
我正在使用Postgres 8.1.4数据库运行SUSE。
小智 5
首先:
即使您无法升级到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
Run Code Online (Sandbox Code Playgroud)
现在,您知道PGDATA中的哪个目录正在使用空间,您可以对其进行处理。
如果是日志或pg_temp-重新启动pg或删除日志(pg_clog和pg_xlog不是该单词的通用含义的日志,切勿从此处删除任何内容!)。
如果它在您的基本目录中,则:
基本目录中的数字目录与数据库有关。您可以使用以下方法进行检查:
select oid, datname from pg_database;
Run Code Online (Sandbox Code Playgroud)
当您知道正在使用大部分空间的数据库时,请连接到该数据库,然后检查哪些文件正在使用大部分空间。
文件名将为数字,并带有可选的“ .digits”后缀-该后缀(目前)无关紧要,您可以通过发出以下命令检查文件的确切含义:
select relname from pg_class where relfilenode = <NUMBER_FROM_FILE_NAME>;
Run Code Online (Sandbox Code Playgroud)
一旦知道哪些表/索引使用了大部分空间,就可以对其进行VACUUM FULL,或对其执行CLUSTER命令(更好)。
| 归档时间: |
|
| 查看次数: |
9872 次 |
| 最近记录: |