Linux PostgreSQL 12-中的大型缓存文件;“基础”;目录

Linux PostgreSQL 12-中的大型缓存文件;“基础”;目录,linux,postgresql,ubuntu,Linux,Postgresql,Ubuntu,我注意到我的小8MB数据库被PostgreSQL 12缓存在这个文件夹中: /var/lib/postgresql/12/main/base/16384 此文件夹包含多个1GB文件,例如“16417”,重1073741824字节 如何删除这些文件并将缓存文件空间限制为最大100 GB?现在它使用尽可能多的空间,并使我的磁盘崩溃(没有剩余空间) 在postgresql.conf文件中,我更改了以下选项: temp_file_limit = 10000000 shared_buffers = 1

我注意到我的小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。

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

找出16384数据库是什么:

SELECT datname FROM pg_database WHERE oid = 16384;
然后连接到该数据库,找出16417是什么:

SELECT relname, relnamespace::regnamespace, relkind
FROM pg_class WHERE relfilenode = 16417;
如果该对象的大小大于其应有的大小,则可能您的表或索引过大,而
真空(完整)选项卡可以使其变小(但不要忘记,重写时无法访问该表!)

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

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

找出16384数据库是什么:

SELECT datname FROM pg_database WHERE oid = 16384;
然后连接到该数据库,找出16417是什么:

SELECT relname, relnamespace::regnamespace, relkind
FROM pg_class WHERE relfilenode = 16417;
如果该对象的大小大于其应有的大小,则可能您的表或索引过大,而
真空(完整)选项卡可以使其变小(但不要忘记,重写时无法访问该表!)


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

谢谢,我意识到我的服务器创建新的更新临时记录的速度比清空它们快。在更改应用程序体系结构(将这些记录放在RAM中,而不是DB中)之后,所有问题都解决了。谢谢,我意识到我的服务器创建新的更新临时记录的速度比清空它们的速度要快。更改应用程序架构(将这些记录保存在RAM中,而不是DB中)后,所有问题都得到解决。