PostgreSQL中的临时文件

时间:2019-01-15 07:23:58

标签: postgresql optimization

我的数据库大小正在增长到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;

1 个答案:

答案 0 :(得分:0)

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

因为这是一个累积数,所以除非您重置统计信息,否则它会不断增加并且永远不会缩小。

您可以使用

重置那些统计信息(以超级用户身份)
select pg_stat_reset();

似乎您的查询确实使用了许多临时文件和临时空间。这可能表明您没有给Postgres足够的内存(例如work_memtemp_buffers),但这是另一个问题。

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