如何使用Oracle DB获取查询执行统计信息?

时间:2015-10-01 16:06:43

标签: sql-server oracle sql-execution-plan

我是数据库新手。我尝试在SQL Server 2014和Oracle 12c上运行一个简单的查询。

这是我使用SQL Server执行的计划。它包含有关I / O成本和CPU成本的信息,以秒为单位。

enter image description here

但是我无法使用Oracle找到相同的信息。执行计划中显示的CPU成本不基于执行时间。 enter image description here

我想在两个数据库之间进行一些比较。如何在Oracle中获取与SQL Server中相同的信息?此外,我怎么知道缓存命中率?

谢谢。

3 个答案:

答案 0 :(得分:1)

成本估算实际上是基于时间的。

这是一个非维度化的度量,表示查询在逻辑读取的等效数量方面完成的估计时间,因此如果逻辑读取预计需要0.001秒,则12的成本为0.012秒。

虽然通常会说不同的查询之间的成本无法比较,但这在早期版本中确实是明确的。比较查询成本的难度与单块和多块读取,写入和CPU操作需要多长时间有关。这可能取决于如此多的因素(系统上的其他活动,以及影响块实例或i / o子系统缓存块的可能性之前的活动),您实际上不太可能期望得到费用的时间。

作为系统效率的衡量标准,缓存命中率已经在相当长的一段时间内失去信誉。通过简单地运行特定类型的高效低效查询,可以将缓存命中率提高到任意数量。

答案 1 :(得分:0)

使用Oracle Database 12c: EM Express Performance Hub获取查询及其操作的估算值和实际值。定期解释计划很有帮助,但它们只是告诉您Oracle 认为将会发生什么,而不一定会发生什么。

具体而言,使用SQL Details(聚合)或SQL监视器详细信息(上次执行)信息。

答案 2 :(得分:0)

你关闭,非常接近。

使用AutoTrace运行。

Autotrace Output in SQL Developer

我详细介绍了该功能here,或者您当然可以阅读文档或帮助。