一个SQL语句引发的ORA-00600错误排查(3)
发布时间:2021-01-08 01:06 所属栏目:53 来源:网络整理
导读:对于Merge语句的更多反思,如下: 我所从事的一些调优工作中,对于Merge的优化很难下手,因为这虽然是一个语句,但是有多重执行路径,执行计划没法确定,使用调优工具大多也给不出建议. 在10g的版本中,如果scheduler中使
对于Merge语句的更多反思,如下:
这些问题会或多或少困扰到你,而我印象很深的案例,则是第1项中列举的,优化类的困扰.我举一个例子. 下面是我在一次系统监控中发现的一个性能问题,CPU使用异常,而经过分析发现瓶颈来源于数据库层面的一个SQL语句. 看到的语句类似这样的形式: 查看执行计划发现里面存在大量的全表扫描,资源消耗极高. 而这个语句的逻辑其实仔细看看还能明白,就是在插入一条记录前看看表中是否含有,如果没有就插入,否则更新,但是里面使用了count(*)的方式处理,过滤条件存在一些潜在的问题,而优化方式就是简化这种逻辑.改为如下的方式: 9总结很多的事情都有两面性,Merge语句就是如此,而且是一种特殊的存在,可能很多问题在特定版本中出现,在升级之后问题就会迎刃而解,而如果分析不当,可能我牢牢攥在手里的就是一个错误的结论,所以很多观点碰撞还是会摩擦出不少的火花,大家共同从中受益.我依然记得很久之前的一次技术争论中,有人说道:判断一个技术的优劣,也需要看待,到底是它带来的问题更多还是解决的问题更多? 确实如此. 文章出处:DBAplus社群 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读