2020-03-04 PG崩溃 - 一个查询sql把硬盘打满了

本文记录了一次因PostgreSQL查询导致临时文件占用硬盘至满,从而引发数据库崩溃的事件。通过调查,发现是由于一个查询SQL执行慢并产生大量临时文件。解决方案是限制查询中的ID数量,使执行计划改变。此外,调整`random_page_cost`配置能显著提升查询性能,防止临时文件暴涨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

崩溃现象

3月3日晚,加班生产的同事们报告系统登录不上去,IT的同事检查监控,数据库CPU打爆、I/O报警,但是还没查出原因数据库自行恢复了。
3月4日一早,再次发生相同问题,直到中午也没有自行恢复,重启数据库解决。同时发现,数据库临时文件不停增长,直到把硬盘占满,数据库无法访问。重启后临时文件没了,之后又暴涨至崩溃,只能临时看着数据库硬盘,快满的时候重启一下数据库避免死机。
被打爆的CPU
超高的硬盘读写

调查经过

崩溃原因查明,数据库临时文件把硬盘占满导致。那么又是什么原因导致临时文件突然暴涨呢。
PG临时文件如下:

total 550597824
-rw------- 1 postgres postgres 3178496 Mar  4 13:09 pgsql_tmp126504.0
-rw------- 1 postgres postgres 3137536 Mar  4 13:09 pgsql_tmp126504.1
-rw------- 1 postgres postgres 3194880 Mar  4 13:09 pgsql_tmp126504.10
-rw------- 1 postgres postgres 3129344 Mar  4 13:09 pgsql_tmp126504.100
-rw------- 1 postgr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值