有两个数据库服务器,我想比较它们的性能。
两者都有 Windows 操作系统和 Oracle(10.2.0.4 和 11.0.2)数据库。
两者都是具有 15-20 个用户的 OLAP 数据库。硬件不同,但我没有太多关于配置的信息。
它们都有相似的表,我使用解释计划将相同的 sql 查询与完全相同的表进行比较。(58M 行,60 列)。
select * from TABLE
我用过select count(*) from TABLE
一个解释计划显示 00:35:00,另一个显示时间列的 01:45:00。
我想知道比较解释计划是否足以比较性能,如果不是我该怎么办?
您无法仅通过查看它们的 sql 计划来比较 2 个数据库的性能。相同的查询可以有非常不同的计划。当版本不同时,成本的各种计算都是不同的。查询执行时遵循的计划很可能与您从客户的解释计划中获得的计划完全不同。
比较性能的唯一方法是测量查询或进程的执行情况并比较这些时间。您可以使用 AWR 来比较数据库性能。一定的工作负载会产生一定的吞吐量并消耗或多或少的 dbtime。如果您的作业花费的 dbtime 和经过的时间较低,您可以肯定地说,与时间较长的数据库相比,该数据库的性能更好。
在 11g 中,启用了自动调整任务并启用了自动接受 sql 配置文件,很可能下一次运行已经显示出更好的时间安排。
做到这一点的方法是使用数据库重放,使用从生产系统捕获的真实工作负载。