我有一个物化的视图,每五分钟刷新一次。SQL在多个表中聚合数据,每个表的行数超过800 k。
但是,当使用“刷新物化视图并发tableName”时,查询运行约一个小时,然后抱怨:ERROR: could not write block 39760692 of temporary file: No space left on device。
应该注意的是,每次执行查询时,这39760692都会发生变化。
磁盘大小约为960 GB,数据库大小约为30 GB。所以磁盘有大约930 GB的空闲空间。
我注意到,在运行刷新查询时,磁盘的使用率高达每分钟12 GB左右,最后,当它达到960 GB的标记时,就会出现查询错误而没有空格错误。立即,磁盘使用率从异常增长回到30 is。
我甚至尝试了REFRESH MATERIALIZED VIEW tableName (没有并发)并看到了相同的行为。
我不知道这里能做些什么来诊断这个问题。
发布于 2020-07-19 19:22:26
找到postgres为您编写临时文件的位置,并在刷新期间遵循它。当您正在处理数据库中的大量数据时,postgres必须编写一个巨大的临时文件,当这个文件填充您的磁盘时,您将得到一个错误。
您可能需要找到一种更有效的方法来编写查询。
https://dba.stackexchange.com/questions/271237
复制相似问题