如何解决postgresql中的“无法写入临时文件块:设备上没有剩余空间”?
Posted
技术标签:
【中文标题】如何解决postgresql中的“无法写入临时文件块:设备上没有剩余空间”?【英文标题】:How to resolve "could not write block of temporary file: No space left on device" in postgresql? 【发布时间】:2019-06-28 20:02:20 【问题描述】:我在 postgres 中有本地数据库。其中单表包含“74980435”的数据。
当我尝试执行 SELECT
查询时,它会抛出此错误:
“无法写入临时文件的第 657567 块:设备上没有剩余空间”。
我正在尝试在 Laravel 中执行选择查询。
谁能帮帮我?
【问题讨论】:
可能相关:***.com/questions/52606584/… 【参考方案1】:您的查询(您没有显示)可能缺少一两个连接条件,或者它试图对大量行进行排序或缓存大量函数结果或物化节点。
当数据不适合work_mem
时,PostgreSQL 开始将它们放入临时磁盘文件中。您的查询创建了足够的临时填充文件系统。
您可以设置temp_file_limit
参数作为防御,但您应该找出查询中的错误。
【讨论】:
查询没有错误,因为现在表包含“133072194”记录,我正在尝试执行“SELECT COUNT(test) FROM mytable WHERE test = false”,但它需要执行时间:128320.712毫秒 我已经在测试列上建立了索引。能否请您告诉我,我可以优化或更改什么,以便我的查询变得更快。 当然不是不知道查询和EXPLAIN (ANALYZE, BUFFERS)
输出。但是您应该为此提出另一个问题。以上是关于如何解决postgresql中的“无法写入临时文件块:设备上没有剩余空间”?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决实体映射中的 Grails 错误重复列?在现有的 Postgresql 数据库上
'~' 和 '^' 如何与 PostgreSQL 中的实际示例一起使用?