随着时间的推移,postgres阻止了我的SSD(256MB)出现问题。
我的应用程序有一个表,该表包含我预先创建的caseA - caseB
对。使用并行工作程序,每个具有自己连接的工作程序都会运行一个选择查询-根据接收到的fetchall()
,通过其主键(包括5秒,包括caseA-caseB pair
)连接其他几个表。
然后,它对数据进行一些分析,并对其他两个表执行copy_from
。人们认为,随着时间的推移,磁盘使用率会很高,并且积压的高峰会在400s
处,并最终使我的系统停止运行。
我不明白为什么会发生以及如何预防?我们正在谈论的总数为6500万例。一个结果表将具有相同数量的行,但另一个结果表将具有更多-数亿条记录。
我曾尝试使用Semaphor
来控制有多少工作人员可以下载/上传,增加work_mem
,shared_buffers
等。但这似乎只是推迟了问题。
几次跑步后,我为所有工人实施了睡眠时间,但这似乎无济于事,这就是为什么我认为问题必须在postgres内解决。
非常感谢您的帮助。