Query Store – это мощная функция в SQL Server, которая позволяет отслеживать и анализировать производительность запросов. Одной из ключевых функций Query Store является возможность принудительного использования планов запросов. Но почему важно проверять принудительные планы? В этой статье мы сосредоточимся на второй причине – сбоях Query Store при принудительном использовании планов.
Сбои Query Store происходят, когда Query Store не может принудительно использовать заданный план. Например, предположим, что вы настроили Query Store на принудительное использование индекса “NCIX_dt_present” для определенного запроса. Если вы удаляете индекс, Query Store будет выполнять следующие действия:
- Игнорировать план, который должен быть принудительно использован, и выбирать следующий наилучший план запроса, выбранный оптимизатором.
- Отметить сбой принудительного использования плана в метаданных Query Store.
Как можно определить эти сбои Query Store? Один из способов – запросить системные представления в SQL Server. Вот пример запроса, который извлекает информацию о сбоях Query Store:
SELECT qt.query_sql_text, q.query_id, CAST(query_plan AS XML) AS 'План выполнения', qp.force_failure_count, qp.last_force_failure_reason_desc, rs.first_execution_time, rs.last_execution_time, rs.count_executions, rs.avg_duration, rs.avg_rowcount, rs.last_logical_io_reads, rs.avg_cpu_time, rs.avg_query_max_used_memory
FROM sys.query_store_plan qp
INNER JOIN sys.query_store_query q ON qp.query_id = q.query_id
INNER JOIN sys.query_store_query_text qt ON q.query_text_id = qt.query_text_id
INNER JOIN sys.query_store_runtime_stats rs ON qp.plan_id = rs.plan_id
WHERE qp.is_forced_plan = 1
AND qp.force_failure_count > 0
ORDER BY rs.last_execution_timeЭтот запрос предоставит вам список сбоев Query Store, включая текст запроса, план выполнения, количество сбоев, причину сбоя и другую соответствующую статистику.
Настоятельно рекомендуется отслеживать сбои Query Store и принудительные планы, чтобы избежать неожиданных результатов производительности. Путем отслеживания и анализа этих сбоев вы можете гарантировать оптимальную производительность ваших запросов и принимать соответствующие меры при необходимости.
В заключение, понимание сбоев Query Store при принудительном использовании планов является важным для поддержания производительности вашей базы данных SQL Server. Будучи осведомленными об этих сбоях и принимая корректирующие меры, вы можете обеспечить постоянную доставку желаемой производительности ваших запросов.