【问题标题】:Can EXPLAIN provide more than just a Query Plan? [closed]EXPLAIN 能否提供更多的查询计划? [关闭]
【发布时间】:2012-06-26 08:13:16
【问题描述】:

了解给定 SQL 语句的磁盘读取/写入、内存、CPU 等统计信息会很有用。

【问题讨论】:

  • 这取决于您的操作系统和 RDBMS。例如,Microsoft SQL Server 有 TONS 个可供您使用的性能计数器!
  • SQL-Server 的 EXPLAIN 提供这些统计信息,还是外部提供的?
  • 有些可从 T-SQL 获得(例如“显示计划”),有些可在 SQL Profiler 中获得,许多其他可在 Windows Perfmon 中获得
  • 我认为在 EXPLAIN 中包含尽可能多的统计信息,专门用于正在执行的 SQL 语句,会提供最准确的结果?
  • 您是在询问特定的 RDBMS,还是在询问是否有 ANSI 标准?这个问题过于笼统。

标签: mysql sql-server performance oracle informix


【解决方案1】:

标签中有 4 种不同的 DBMS。它们中的每一个都通过不同的机制提供有关查询的大量额外信息——通常不是通过 EXPLAIN 本身,这是优化器预测查询成本而不是记录它的成本的方式。但是,在每个 DBMS 中完成此操作的机制完全不同,远远超出了除事实标准之外的任何其他标准(每个 DBMS 都是其自己的事实标准)。

【讨论】:

    【解决方案2】:

    Oracle Explain 工具是一种成本估算工具,而不是资源消耗的预测器。您可以查询 Oracle 中的字典(例如,V$SQLAREA 视图)以了解给定 SQL 语句的实际资源消耗。

    顺便说一句,两条 SQL 语句可能会产生相同的执行计划,但 Oracle 可能会将其视为不同的 SQL 语句。

    【讨论】:

    • 我觉得它是一个非常重要的分析工具,可以了解正在执行的任何 SQL 语句的资源消耗!.. 也许像“TRACE ON...”这样的 SQL 语句可以在语句执行后提供此信息被处决了?
    • 在 Oracle SQL*Plus 中,您可以对 I/O 信息执行 SET AUTOTRACE ON。
    • 你也可以使用gather_plan_statistics提示(或statistics_level=all
    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    相关资源
    最近更新 更多