经验总结 #541:自动计划修正与外部表:来自一线的实践教训
Azure SQL Database 的自动计划修正是一项用于解决查询计划回退的有价值功能。它利用查询存储(Query Store)检测查询执行计划性能下降的情况,并可自动回退到之前良好的计划。然而,涉及外部表的查询因其依赖远程数据访问而具有独特的执行特征。这些查询可能并不总是自动计划修正的合适候选对象,因为其性能受本地数据库之外的因素影响。因此,识别引用外部表的查询并评估其是否应参与 FORCE_LAST_GOOD_PLAN 功能至关重要。审查外部表查询的执行计划会显示远程查询(Remote Query)算子,表明其依赖远程资源。此类查询的性能受远程数据库、网络延迟和数据检索大小等因素影响,而不仅取决于本地计划。因此,对这些查询实施自动计划强制的潜在收益需要谨慎评估。该过程涉及查找与外部表查询关联的特定查询存储(Query Store)查询 ID。一旦识别出该查询 ID,即可将其从自动计划修正中排除。这通过禁用该特定查询的 FORCE_LAST_GOOD_PLAN 来实现。这种有针对性的排除使得自动计划修正仍可针对其他查询保持激活状态,同时确保外部表查询能够单独管理。