我有一个大约800GB的数据库。当我尝试运行一个对某些变量进行分组并聚合结果的查询时,它在运行几个小时后停止了。Postgres提示磁盘空间已满。在查看统计数据后,我发现数据库有大约400GB的临时文件。我相信这些临时文件是在我运行查询时创建的。我的问题是如何删除这些临时文件。此外,我应该如何避免这样的问题-使用游标或for循环以不一次处理所有数据吗?谢谢。
我正在使用Postgres 9.2
我有一个大约800GB的数据库。当我尝试运行一个对某些变量进行分组并聚合结果的查询时,它在运行几个小时后停止了。Postgres提示磁盘空间已满。在查看统计数据后,我发现数据库有大约400GB的临时文件。我相信这些临时文件是在我运行查询时创建的。我的问题是如何删除这些临时文件。此外,我应该如何避免这样的问题-使用游标或for循环以不一次处理所有数据吗?谢谢。
我正在使用Postgres 9.2
base/pgsql_tmp
中的临时文件将在查询完成时被删除。不应该手动删除这些文件。work_mem
。CHECKPOINT
并查看文件是否仍然存在。如果是,则表示存在错误。当PostgreSQL服务器因磁盘空间用尽而崩溃时会出现此问题。EXPLAIN
检查)。我知道这听起来并没有太大帮助,但没有更好的方法。你可能无论如何都必须这样做,否则运行几个小时的时间对你来说是否可以接受?