首页 > 解决方案 > 如何理解 Oracle 中跟踪文件的统计信息。如 CPU、经过时间、查询...等

问题描述

我正在学习 Oracle 中的查询优化,我知道跟踪文件将创建有关查询执行和查询的 EXPLAIN 计划的统计信息。

示例跟踪文件照片

在跟踪文件的底部,它是查询的 EXPLAIN PLAN。我的第一个问题是,“time = 136437 us”部分是否显示查询执行步骤的持续时间?“我们”是什么意思?是时间单位吗?

另外,谁能解释一下 count 、 cpu 、 elapsed 、 disk 和 query 等统计数据是什么意思?我已经谷歌并阅读了有关它们的 Oracle 文档,但我仍然无法理解。谁能更清楚地阐明这些统计数据的含义?

提前致谢。我是新手,对我的英语感到抱歉。

标签: sqloraclequery-performance

解决方案


Oracle 数据库中数据访问的最小单位是块。不是一排。

每个块可以存储许多行。

数据库可以在当前或一致模式下访问块。

  • 当前 = 因为块“现在”存在。
  • 一致 = 因为在您的查询开始时已被阻止。

查询和当前列报告数据库以一致(查询)和当前模式访问块的次数。

当访问一个块时,它可能已经在缓冲区缓存(内存)中。如果是这样,则不需要磁盘访问。如果没有,它必须进行物理读取(pr)。磁盘列是总物理读取的计数。

计划中每一行的统计数据是该操作的数据。加上其所有子操作的总和。

简单来说,数据库通过首先访问第一个孩子来处理计划。然后将行向上传递给父级。然后按顺序排列该父级的所有其他子操作。子操作在显示中从其父操作缩进。

所以数据库像这样处理你的查询:

  1. 从 CUSTOMER 读取 2,000 行。这需要 749 次一致的块获取和 363 次磁盘读取(此行上的 cr 和 pr 值)。这花了 10,100 微秒。
  2. 从 BOOKING 中读取 112,458 行。这进行了 8,203 次一致读取和零磁盘读取。这花了 337,595 微秒
  3. 使用哈希连接将这两个表连接在一起。CR、PR、PW(物理写入)和时间值是以下操作的总和。加上这个操作所做的任何工作。所以哈希连接:
    • 做了 8,952 - ( 749 + 8,203 ) = 零一致读取
    • 做了 363 - ( 363 + 0 ) = 零物理读取
    • 执行时间为 1,363,447 - ( 10,100 + 337,595 ) = 1,015,752 微秒

请注意,哈希连接的 CR 和 PR 总计与 fetch 行中的查询和磁盘总计相匹配?

计数列报告该操作发生的次数。提取是对数据库的调用以获取行。因此客户端调用了数据库 7,499 次。每次收到 ceil(112,458 / 7,499) = 15 行。

CPU 是服务器的处理器执行该步骤的总时间(以秒为单位)。Elapsed 是挂钟的总时间。这是 CPU 时间 + 任何额外的工作。比如磁盘读取、网络时间等。


推荐阅读