问题描述
嗨,汤姆,
我有一个正在使用并行处理的查询。
当我查看explain计划时,它不会向我显示 “tq”,“IN-out” 和 “pq distrib” 信息。我查看Plan_table没有诸如 'TQ',IN-out '和 'PQ Distrib' 之类的列。
但是,当我将DBMS_XPLAN.DISPLAY用于同一查询时,它确实会为explain计划显示 'TQ','in-OUT' 和 'PQ Distrib' 信息。
我的问题是,当这些列在Plan_Table中不存在时,DBMS_XPLAN.DISPLAY从哪里构建此信息以显示在explain计划中?
我已经检查了V $ SQL_PLAN和V $ SQL_PLAN_STATISTICS_ALL视图,但没有找到 'TQ','IN-out' 和 'PQ Distrib' 列。
提前感谢您的帮助。
问候,
拉维S
我有一个正在使用并行处理的查询。
当我查看explain计划时,它不会向我显示 “tq”,“IN-out” 和 “pq distrib” 信息。我查看Plan_table没有诸如 'TQ',IN-out '和 'PQ Distrib' 之类的列。
但是,当我将DBMS_XPLAN.DISPLAY用于同一查询时,它确实会为explain计划显示 'TQ','in-OUT' 和 'PQ Distrib' 信息。
我的问题是,当这些列在Plan_Table中不存在时,DBMS_XPLAN.DISPLAY从哪里构建此信息以显示在explain计划中?
我已经检查了V $ SQL_PLAN和V $ SQL_PLAN_STATISTICS_ALL视图,但没有找到 'TQ','IN-out' 和 'PQ Distrib' 列。
提前感谢您的帮助。
问候,
拉维S
专家解答
在调用它时添加并行格式以获取这些列:
如果你得到了display_cursor的执行计划 (这是你想要的,真的),那么当并行运行时,无论如何你应该得到这些:
在v $ 视图中没有针对这些的特定列,它在other_tag中:
create table t as select level c1 from dual connect by level <= 100; set serveroutput off explain plan for select /*+ parallel */count (*) from t; select * from table(dbms_xplan.display(null, null, '+PARALLEL')); -------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 | | | | | 1 | SORT AGGREGATE | | 1 | | | | | | | 2 | PX COORDINATOR | | | | | | | | | 3 | PX SEND QC (RANDOM) | :TQ10000 | 1 | | | Q1,00 | P->S | QC (RAND) | | 4 | SORT AGGREGATE | | 1 | | | Q1,00 | PCWP | | | 5 | PX BLOCK ITERATOR | | 100 | 2 (0)| 00:00:01 | Q1,00 | PCWC | | | 6 | TABLE ACCESS FULL| T | 100 | 2 (0)| 00:00:01 | Q1,00 | PCWP | | --------------------------------------------------------------------------------------------------------复制
如果你得到了display_cursor的执行计划 (这是你想要的,真的),那么当并行运行时,无论如何你应该得到这些:
select /*+ parallel gather_plan_statistics */count (*) from t; select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS ALL')); ----------------------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | Cost (%CPU)| E-Time | TQ |IN-OUT| PQ Distrib | A-Rows | A-Time | Buffers | Reads | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 2 (100)| | | | | 1 |00:00:00.01 | 3 | 0 | | 1 | SORT AGGREGATE | | 1 | 1 | | | | | | 1 |00:00:00.01 | 3 | 0 | | 2 | PX COORDINATOR | | 1 | | | | | | | 2 |00:00:00.01 | 3 | 0 | | 3 | PX SEND QC (RANDOM) | :TQ10000 | 0 | 1 | | | Q1,00 | P->S | QC (RAND) | 0 |00:00:00.01 | 0 | 0 | | 4 | SORT AGGREGATE | | 2 | 1 | | | Q1,00 | PCWP | | 2 |00:00:00.01 | 2 | 5 | | 5 | PX BLOCK ITERATOR | | 2 | 100 | 2 (0)| 00:00:01 | Q1,00 | PCWC | | 100 |00:00:00.01 | 2 | 5 | |* 6 | TABLE ACCESS FULL| T | 1 | 100 | 2 (0)| 00:00:01 | Q1,00 | PCWP | | 100 |00:00:00.01 | 2 | 5 | -----------------------------------------------------------------------------------------------------------------------------------------------------------复制
在v $ 视图中没有针对这些的特定列,它在other_tag中:
select operation, other_tag from v$sql_plan_statistics_all where plan_hash_value = '3126468333'; OPERATION OTHER_TAG SELECT STATEMENTSORT PX COORDINATOR PX SEND PARALLEL_TO_SERIAL SORT PARALLEL_COMBINED_WITH_PARENT PX BLOCK PARALLEL_COMBINED_WITH_CHILD TABLE ACCESS PARALLEL_COMBINED_WITH_PARENT 复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1270次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
766次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
681次阅读
2025-03-06 09:41:49
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
DarkAthena
564次阅读
2025-03-04 14:33:31
Oracle避坑指南|同名表导出难题:如何精准排除指定用户下的表?
szrsu
512次阅读
2025-03-05 00:42:34
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
452次阅读
2025-03-13 14:38:19
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
446次阅读
2025-03-04 21:56:13
【ORACLE】char类型和sql优化器发生的“错误”反应
DarkAthena
404次阅读
2025-03-04 23:05:01
什么,oracle 主机用户被删了?原来是虚惊一场!
Lucifer三思而后行
400次阅读
2025-03-03 21:12:09
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
340次阅读
2025-03-12 21:27:56