如何使用假设分析来判断数据库环境变化的性能影响 ?

要正确评估数据库环境变化期间一组SQL语句的性能影响,必须深入了解SQL查询性能可能受到的影响。SQL查询可能发生的两种主要性能变化类型。我称之为“渐进性变化”的第一种类型通常是由统计数据的变化引起的,例如相关表或索引页面中数据量的波动。如果统计数据的变化不足以触发新的查询计划,查询计划将保持不变,并且与原始统计数据相比,SQL查询的性能不会有很大的变化。

第二种性能变化类型称为“跳跃性变化”,是由于统计数据或模式发生重大变化而引入新的查询计划。这种类型的变化可能对性能产生重大影响,有时会导致性能灾难。

在更改数据库环境时,必须密切监视SQL查询的性能,并采取适当措施来优化受影响的语句。为了跟踪环境变化前后的关键SQL语句,可以遵循以下一般步骤:

  1. 从SGA或AWR中提取SQL语句以及其查询计划和性能统计信息。
  2. 对数据库应用环境变化,例如创建新索引、收集统计信息、升级数据库或预测在生产数据库中软件部署的性能。
  3. 从更改的数据库环境中获取查询计划。
  4. 比较每个SQL语句的查询计划,以确定是否存在任何差异。
  5. 查找潜在问题,如未使用的索引、高成本SQL更改等。
  6. 对修改后的SQL语句的查询计划进行基准测试,以检测任何性能下降。


如果您只需要跟踪少量SQL语句的性能在环境变化前后的变化,上述步骤可以手动完成。但是,如果您需要监视数百个SQL语句而没有工具,则可能会很具有挑战性。 Tosska DB Ace for Oracle配备了一个强大的工具,可以帮助您跟踪两个数据库之间SQL语句的性能差异。

DBAO SQL Performance Tracker – YouTube
Tosska DB Ace Enterprise for Oracle – Tosska Technologies Limited