oracle大量排序操作引发的内存不足问题

在监控酒窖数据库时发现CPU使用率异常升高,通过排查发现是由于SQL语句不当导致大量临时表空间写操作及内存占用增加。通过对SQL语句进行优化调整,解决了CPU使用率异常升高的问题。

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

下午监控酒窖数据库的时候,突然发现cpu使用率猛涨,具体信息如下:25618347_201202281719161.jpg

拉出对应的sql语句,发现有大量的排序操作,单独放到pl/sql里面执行,然后操作系统层面查看对应的磁盘写操作,发现有大量的临时表空间写操作,询问酒窖相关人员,这几天也没有上什么新的功能,都是些老的sql,然后查询操作系统内存使用情况,发现64G的内存只剩下2G左右的空闲内存了,于是释放内存,之后发现数据库回归到了正常情况,但是没有持续多久cpu使用率又涨上去了,查询相关sql,依旧是之前的语句,拿出来仔细研究发现,这个查询语句,涉及到4张表,2个排序操作,但是其中有张表where条件没有关联,从而造成查询的时候形成了笛卡尔集的查询结果,数据量几百万,而且实时查询又很多,应该是这个原因造成的,于是联系开发人员,改写相关sql,重新紧急发布上线,之后数据库就恢复正常了,如下:25618347_201202281736161.jpg

调整前对应的sql及具体执行计划如下:25618347_201202291513371.jpg

调整之后的具体如下:25618347_201202291515031.jpg

 

具体原因,初步推断应该是该功能模块,最近执行的比较多,只是推断,继续排查吧。

fj.pnghigh-cpu.jpg

fj.pnghigh-cpu-after.jpg

fj.pngbe_tune_sql.jpg

fj.pngaf_tune_sql.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25618347/viewspace-717312/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25618347/viewspace-717312/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值