如何在Oracle中了解跟踪文件的统计信息。例如CPU,经过时间,查询...等

时间:2018-10-15 12:55:27

标签: sql oracle query-performance

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

example trace file photo

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

此外,任何人都可以解释一下诸如count,cpu,elapsed,disk和query之类的统计信息吗?我已经在Google上搜索并阅读了有关它们的Oracle文档,但我仍然无法理解。谁能更清楚地阐明这些统计信息的含义?

先谢谢了。我是新人,对我的英语感到抱歉。

1 个答案:

答案 0 :(得分:0)

Oracle数据库中最小的数据访问单元是一个块。不行。

每个块可以存储许多行。

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

  • 当前=,因为该块“现在”存在。
  • Consistent =,因为查询开始时已存在阻止。

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

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

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

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

因此数据库按如下方式处理您的查询:

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

是否注意到哈希联接的CR和PR总数与提取行中的查询和磁盘总数相匹配?

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

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