PostgreSql中的临时文件

4

我的数据库大小增长到了41GB,但是当我创建备份时它变成了2.4 / 2.5GB,为什么会有这么大的差异?

我已经执行了一些清理操作,重新索引等,但是大小还没有缩小,并且它显示19 GB的临时文件,但是当我在C:\Program Files\PostgreSQL\10\data\base\pgsql_tmp中检查时,文件夹是空的。

我该如何删除这些临时文件? 是否有方法可以减小我的数据库大小?

编辑

db stat result

获取临时文件的查询

SELECT temp_files AS "Temporary files"
     , temp_bytes AS "Size of temporary files"
    FROM   pg_stat_database db;

pg_dump 不包括索引数据,此外,自定义格式会压缩备份。因此,如果有很多索引,则使用 pg_dump 做的备份文件预计比实际数据库大小要小得多。 - user330315
1
无关,但是:在Windows上将数据目录放入c:\Program Files不是一个好主意。 - user330315
1
请展示导致您得出结论的查询和查询结果。不要将该信息添加为评论,而是编辑问题。 - Laurenz Albe
1个回答

10

pg_stat_database中的值是自服务器启动以来的累计值,因此它不是当前使用的字节数。它是自统计信息重置以来使用的字节数。

由于这是一个累积数字,它将不断增加,除非您重置统计信息,否则它永远不会缩小。

您可以使用以下命令(作为超级用户)重置这些统计信息:

select pg_stat_reset();

看起来你的查询确实使用了很多临时文件和临时空间。这可能表明你没有为Postgres分配足够的内存(例如work_memtemp_buffers)。但这是一个不同的问题。

这些临时文件也不是数据库转储的一部分,因为它们仅在查询执行期间使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接