Mar*_*nek 3 linux postgresql ubuntu
我注意到我的 8MB 小数据库被 PostgreSQL 12 缓存在这个文件夹中:
/var/lib/postgresql/12/main/base/16384
Run Code Online (Sandbox Code Playgroud)
该文件夹包含多个 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
Run Code Online (Sandbox Code Playgroud)
但不幸的是它没有帮助。
我还能做什么来解决这个问题?在其中一个文件中,这些文件增长到 80 GB...
编辑:即使使用默认设置也会出现此问题。我的系统是Ubuntu 18.04.4。
这不是缓存,这些是实际的表和索引。如果您弄乱这些文件,您将破坏数据库并丢失数据。
找出数据库 16384 是什么:
SELECT datname FROM pg_database WHERE oid = 16384;
Run Code Online (Sandbox Code Playgroud)
然后连接到该数据库并找出 16417 是什么:
SELECT relname, relnamespace::regnamespace, relkind
FROM pg_class WHERE relfilenode = 16417;
Run Code Online (Sandbox Code Playgroud)
如果该对象的大小大于应有的大小,则可能您有一个臃肿的表或索引,并且VACUUM (FULL) tab可以将其缩小(但不要忘记表在重写时无法访问!)。
再次强调,请确保您自己不操作任何这些文件。