抓取线上系统一个慢sql分析时,发现执行计划里有 merge join cartesian,cpu占用 100%。根据以往经验,基本为统计信息不准确造成的,且大概率为不合理的执行计划。
详细分析表之间的关联时,发现确实会导致超大结果集后再和其它表关联
--增加hit
select /*+ ordered use_nl(a b) */
修改 _optimizer_mjc_enabled
alter system set "_optimizer_mjc_enabled" = false;
--问题执行计划
| 23 | NESTED LOOPS OUTER | | 8 | 4696 | 83G (1)|904:23:32 | | |
| 24 | NESTED LOOPS OUTER | | 8 | 4376 | 83G (1)|904:23:32 | | |
| 25 | NESTED LOOPS | | 6 | 3108 | 83G (1)|904:23:32 | | |
| 26 | MERGE JOIN CARTESIAN | | 13M| 2432M| 24M (1)| 00:16:13 | | |
| 27 | PARTITION LIST SINGLE | | 12M| 1700M| 114K (1)| 00:00:05 | KEY | KEY |
|* 28 | TABLE ACCESS FULL | REP_CUS_INFO_M | 12M| 1700M| 114K (1)| 00:00:05 | KEY | KEY |
| 29 | BUFFER SORT | | 1 | 45 | 24M (1)| 00:16:08 | | |
| 30 | TABLE ACCESS BY INDEX ROWID BATCHED | S_BCH_VIEW | 1 | 45 | 2 (0)| 00:00:01 | | |
|* 31 | INDEX RANGE SCAN | I_S_BCH_VIEW_003 | 1 | | 1 (0)| 00:00:01 | | |
| 32 | PARTITION LIST SINGLE | | 1 | 329 | 13885 (1)| 00:00:01 | KEY | KEY |
|* 33 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| REP_LOAN_INFO_M | 1 | 329 | 13885 (1)| 00:00:01 | KEY | KEY |
--正确的执行计划
| 23 | NESTED LOOPS OUTER | | 8 | 4696 | 13970 (1)| 00:00:01 | | |
| 24 | NESTED LOOPS OUTER | | 8 | 4376 | 13930 (1)| 00:00:01 | | |
| 25 | NESTED LOOPS | | 6 | 3108 | 13906 (1)| 00:00:01 | | |
| 26 | NESTED LOOPS | | 6 | 2244 | 13888 (1)| 00:00:01 | | |
| 27 | TABLE ACCESS BY INDEX ROWID BATCHED | S_BCH_VIEW | 1 | 45 | 3 (0)| 00:00:01 | | |
|* 28 | INDEX RANGE SCAN | I_S_BCH_VIEW_003 | 1 | | 2 (0)| 00:00:01 | | |
| 29 | PARTITION LIST SINGLE | | 5 | 1645 | 13885 (1)| 00:00:01 | KEY | KEY |
|* 30 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| REP_LOAN_INFO_M | 5 | 1645 | 13885 (1)| 00:00:01 | KEY | KEY |
|* 31 | INDEX RANGE SCAN | IDX_REP_LOAN_INFO_M_BRID | 15331 | | 58 (0)| 00:00:01 | KEY | KEY |
| 32 | PARTITION LIST SINGLE | | 1 | 144 | 3 (0)| 00:00:01 | KEY | KEY |
|* 33 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED | REP_CUS_INFO_M | 1 | 144 | 3 (0)| 00:00:01 | KEY | KEY |
|* 34 | INDEX RANGE SCAN | IDX_REP_CUS_INFO_M_02 | 1 | | 2 (0)| 00:00:01 | KEY | KEY |
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1333次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
808次阅读
2025-03-17 11:33:53
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
475次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
368次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
319次阅读
2025-03-26 23:27:33
Oracle分区和执行计划相关的几个问题
听见风的声音
313次阅读
2025-03-07 08:51:42
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
253次阅读
2025-03-19 14:41:51
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
250次阅读
2025-03-24 09:42:53
墨天轮个人数说知识点合集
JiekeXu
247次阅读
2025-04-01 15:56:03
一键装库脚本3分钟极速部署,传统耗时砍掉95%!
IT邦德
246次阅读
2025-03-10 07:58:44