我是数据库新手。我尝试在SQL Server 2014和Oracle 12c上运行一个简单的查询。
这是我使用SQL Server执行的计划。它包含有关I / O成本和CPU成本的信息,以秒为单位。
但是我无法使用Oracle找到相同的信息。执行计划中显示的CPU成本不基于执行时间。
我想在两个数据库之间进行一些比较。如何在Oracle中获取与SQL Server中相同的信息?此外,我怎么知道缓存命中率?
谢谢。
答案 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)