基准测试通过测量数据库系统在响应运行时条件时调整查询执行计划的有效程度来评估自适应查询优化 (AQO)。 它们侧重于三个关键方面:性能改进、资源效率以及系统纠正次优计划的能力。 例如,基准测试可能会比较使用静态优化(计划固定)与自适应优化(计划根据数据统计或运行时反馈而变化)执行查询的时间。 跟踪查询延迟、CPU/内存使用率和计划修改次数等指标,以量化 AQO 的优势。 这有助于确定运行时调整的开销是否证明性能提升是合理的。
一种常见的方法是模拟静态计划失败的真实场景。 例如,基准测试可能会使用倾斜的数据分布或不可预测的工作负载模式来对优化器进行压力测试。 考虑一个连接大型表的查询,其中初始统计信息低估了中间结果的大小。 静态计划可能会选择嵌套循环连接,从而导致性能不佳。 自适应优化器可以在检测到计算错误后,在执行过程中切换到哈希连接。 PostgreSQL 的 EXPLAIN ANALYZE
或 Oracle 的 SQL Monitoring 等工具可以捕获这些计划更改,从而使基准测试能够将最终执行策略与原始策略进行比较。 测试还评估系统适应的速度——例如,它是否在重复查询的前几次迭代中纠正了错误的计划。
基准测试进一步评估权衡,例如监视运行时数据的计算成本与计划调整的益处。 例如,SQL Server 批量模式处理中的自适应优化可能会将查询时间减少 30%,但由于运行时统计信息收集,内存使用率会增加 15%。 测试还检查边缘案例,例如高度易失性数据或并发工作负载,以确保稳定性。 经过精心设计的基准测试将隔离变量(例如,数据大小、硬件限制),以查明 AQO 如何提高性能。 通过将受控实验与真实工作负载模拟相结合,开发人员可以获得关于何时以及如何有效利用自适应优化的可行见解。