暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 关于PLAN_TABLE输出的显示

原创 Asher.HU 2021-02-04
2198


要显示计划表输出,可以使用SQL脚本或DBMS_XPLAN程序包。

解释了计划之后,请使用以下SQL脚本或Oracle数据库提供的PL / SQL包来显示最新的计划表输出:

  • DBMS_XPLAN.DISPLAY 表功能

    此功能接受用于显示计划表输出的选项。您可以指定:

    • 计划表名称(如果使用的计划表不是默认的 PLAN_TABLE)
    • 声明ID(如果已使用设置了声明ID) EXPLAIN PLAN
    • 格式选项,确定细节的级别:BASICSERIALTYPICAL,和ALL

    DBMS_XPLAN用于显示PLAN_TABLE输出的示例如下:

    SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
    
    SELECT PLAN_TABLE_OUTPUT 
      FROM TABLE(DBMS_XPLAN.DISPLAY('MY_PLAN_TABLE', 'st1','TYPICAL'));
  • utlxpls.sql :该脚本显示计划表输出以进行串行处理
  • utlxplp.sql :该脚本显示包括并行执行列的计划表输出。

也可以看看:

《 Oracle数据库PL / SQL软件包和类型参考》以获取有关该DBMS_XPLAN软件包的 更多信息


6.3.1.1 DBMS_XPLAN显示功能

您可以使用DBMS_XPLAN显示功能显示计划。

显示功能接受用于显示计划表输出的选项。您可以指定:

  • 计划表名称(如果使用的计划表不是默认的 PLAN_TABLE)
  • 声明ID(如果已使用设置了声明ID) EXPLAIN PLAN
  • 格式选项,确定细节的级别:BASICSERIALTYPICALALL,和在某些情况下ADAPTIVE

表6-1 DBMS_XPLAN显示功能

显示功能笔记

DISPLAY

该表功能显示计划表的内容。

此外,您可以使用此表功能显示表中存储的任何计划(有或没有统计信息),只要此表的各列与计划表的列相同(或V$SQL_PLAN_STATISTICS_ALL包括统计信息)即可。您可以在指定的表上应用谓词以选择要显示的计划行。

format参数控制计划的级别。它接受的价值观BASICTYPICALSERIAL,和ALL

DISPLAY_AWR

该表函数显示存储在AWR中的执行计划的内容。

format参数控制计划的级别。它接受的价值观BASICTYPICALSERIAL,和ALL

DISPLAY_CURSOR

此表函数显示在游标缓存中加载的任何游标的说明计划。除了说明计划外,还可以报告各种计划统计信息(例如I / O,内存和时序)(基于V$SQL_PLAN_STATISTICS_ALL VIEWS)。

format参数控制计划的级别。它接受的价值观BASICTYPICALSERIALALL,和ADAPTIVE指定时ADAPTIVE,输出包括:

  • 最终计划。如果执行尚未完成,则输出将显示当前计划。本节还包括有关影响计划的运行时优化的说明。
  • 推荐方案。在报告模式下,输出包括将基于执行统计信息选择的计划。
  • 动态计划。输出总结了计划中与优化程序选择的默认计划不同的部分。
  • 重新优化。输出显示由于重新优化而在后续执行中选择的计划。

DISPLAY_PLAN

该表功能以CLOB输出类型的多种格式显示计划表的内容

format参数控制计划的级别。它接受的价值观BASICTYPICALSERIALALL,和ADAPTIVE指定时ADAPTIVE,输出将包括默认计划。对于每个动态子计划,计划都会显示可替换的原始行源的列表,以及将替换它们的行源的列表。

如果自format变量指定了轮廓显示,则函数将显示动态子计划中每个选项的提示。如果该计划不是自适应查询计划,则该功能将显示默认计划。如果您未指定ADAPTIVE,则计划按原样显示,但在“注释”部分中会带有其他注释,这些注释会显示任何动态的行源。

DISPLAY_SQL_PLAN_BASELINE

该表函数显示一个或多个执行计划,用于SQL计划基线的指定SQL句柄。

此功能使用存储在计划基准中的计划信息来说明和显示计划。plan_id存储在SQL管理基础可能不匹配plan_id所产生的计划。存储plan_id和生成之间的不匹配plan_id意味着它是不可复制的计划。这样的计划被认为是无效的,并且在SQL编译期间被优化器绕过。

DISPLAY_SQLSET

该表函数显示存储在SQL调整集中的给定语句的执行计划。

format参数控制计划的级别。它接受的价值观BASICTYPICALSERIAL,和ALL


也可以看看:

Oracle Database PL / SQL软件包和类型参考,以了解有关DBMS_XPLAN显示功能的 更多信息


6.3.1.2与计划相关的视图

您可以通过查询动态性能和数据字典视图来获取有关执行计划的信息。

表6-2执行计划视图

视图描述

V$SQL

列出游标的统计信息,并为输入的原始SQL文本的每个子项包含一行。

Oracle Database 19c开始V$SQL.QUARANTINED指示由于该语句消耗了太多资源,该语句是否已被资源管理器终止。Oracle数据库记录并标记隔离的计划,并阻止执行使用这些计划的语句。AVOIDED_EXECUTIONS列指示由于隔离语句而尝试执行但被阻止的执行次数。

V$SQL_SHARED_CURSOR

说明为什么特定子游标不与现有子游标共享。每列标识了无法共享游标的特定原因。

USE_FEEDBACK_STATS列显示子游标是否由于重新优化而无法匹配。

V$SQL_PLAN

包含共享SQL区域中存储的每个语句的计划。

视图定义与相似PLAN_TABLE该视图包括出现在所有最终计划中的所有行的超集。PLAN_LINE_ID是连续编号的,但是对于单个最终计划,这些ID可能不是连续的。

作为替代方案EXPLAIN PLAN,您可以通过查询显示计划V$SQL_PLANV$SQL_PLANover 的优点EXPLAIN PLAN是,您无需了解用于执行特定语句的编译环境。对于EXPLAIN PLAN,您需要设置一个相同的环境以在执行该语句时获得相同的计划。

V$SQL_PLAN_STATISTICS

提供计划中每个操作的实际执行统计信息,例如输出行数和经过时间。除输出行数以外的所有统计信息都是累积的例如,联接操作的统计信息还包括其两个输入的统计信息。中的统计信息V$SQL_PLAN_STATISTICS可用于已将STATISTICS_LEVEL初始化参数设置为的游标ALL

V$SQL_PLAN_STATISTICS_ALL

包含使用SQL内存(排序或哈希联接)的行源的内存使用情况统计信息此视图将信息V$SQL_PLAN与来自V$SQL_PLAN_STATISTICS和的执行统计信息串联在一起V$SQL_WORKAREA

V$SQL_PLAN_STATISTICS_ALL支持对优化器提供的行数和经过时间的估计值进行并排比较。该视图结合了每个游标的V$SQL_PLANV$SQL_PLAN_STATISTICS信息。

也可以看看:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论