首页 > 解决方案 > PostgreSQL 12 - “基本”目录中的大型缓存文件

问题描述

我注意到我的 8MB 小型数据库被 PostgreSQL 12 缓存在这个文件夹中:

/var/lib/postgresql/12/main/base/16384

此文件夹包含多个 1GB 文件,例如“16417”,重 1073741824 字节。

如何删除这些文件并将缓存文件空间限制为最大 100 GB?现在它使用尽可能多的空间并使我的磁盘崩溃(没有剩余空间)。

在 postgresql.conf 文件中,我更改了这些选项:

temp_file_limit = 10000000 
shared_buffers = 128MB 
checkpoint_timeout = 12h
max_wal_size = 100MB
min_wal_size = 80MB

但不幸的是,它没有帮助。

我还能做些什么来解决这个问题?在一个我们的这些文件增长到 80 GB...

编辑:即使使用默认设置也会出现此问题。我的系统是 Ubuntu 18.04.4。

标签: linuxpostgresqlubuntu

解决方案


不是缓存,这些是实际的表和索引。如果您弄乱这些文件,您将破坏您的数据库并丢失数据。

找出数据库 16384 是什么:

SELECT datname FROM pg_database WHERE oid = 16384;

然后连接到该数据库并找出 16417 是什么:

SELECT relname, relnamespace::regnamespace, relkind
FROM pg_class WHERE relfilenode = 16417;

如果该对象的大小大于应有的大小,则可能您有一个膨胀的表或索引,并且VACUUM (FULL) tab可以将其变小(但不要忘记该表在重写时不可访问!)。

同样,请确保您自己不操作任何这些文件。


推荐阅读