Извлеченные уроки № 541: Автом... Заметка

Извлеченные уроки № 541: Автоматическая коррекция плана против внешних таблиц: практический урок из практики

Автоматическое исправление планов в Azure SQL Database — ценная функция для устранения регрессий планов запросов. Она использует Query Store для обнаружения деградации плана выполнения запроса и может автоматически откатываться к предыдущему удачному плану. Однако запросы, использующие внешние таблицы, имеют уникальные характеристики выполнения из-за их зависимости от удаленного доступа к данным. Эти запросы не всегда могут быть подходящими кандидатами для автоматического исправления планов, поскольку на их производительность влияют факторы, выходящие за рамки локальной базы данных. Поэтому важно выявлять запросы, ссылающиеся на внешние таблицы, и оценивать, должны ли они участвовать в функции FORCE_LAST_GOOD_PLAN. Анализ плана выполнения запроса к внешней таблице выявляет оператор Remote Query, указывающий на его зависимость от удаленных ресурсов. На производительность таких запросов влияют удаленная база данных, задержка сети и объем извлекаемых данных, а не только локальный план. Следовательно, потенциальные преимущества автоматического принудительного применения планов для этих запросов требуют тщательной оценки. Процесс включает в себя поиск конкретного идентификатора запроса Query Store, связанного с запросами к внешним таблицам. После идентификации этот идентификатор запроса может быть исключен из автоматического исправления планов. Это достигается путем отключения FORCE_LAST_GOOD_PLAN для данного конкретного запроса. Такое целенаправленное исключение позволяет автоматическому исправлению планов оставаться активным для других запросов, одновременно гарантируя, что запросы к внешним таблицам управляются индивидуально.