gpt4 book ai didi

postgreSQL 真空临时文件?

转载 作者:行者123 更新时间:2023-11-29 14:05:35 27 4
gpt4 key购买 nike

我有一个“小”问题。一周前,我的数据库已满磁盘容量。我删除了不同表中的许多行,试图释放磁盘空间。之后,我尝试运行未完成的完全真空。

我想知道的是。当我停止完全完成真空时,它是否会在磁盘上留下任何我必须手动删除的临时文件?我现在有一个磁盘容量为 100% 的数据库,不用说这是一个大问题。

有什么释放磁盘空间的技巧吗?

我正在使用 postgres 8.1.4 数据库运行 SUSE。

最佳答案

首先:

升级

即使您不能升级到 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命令他们。

关于postgreSQL 真空临时文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com