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

Извлеченные уроки № 560: SQL работает медленно — что могут обнаружить Query Store и SSMS Copilot?

Недавняя сессия продемонстрировала, как исследовать проблемы производительности SQL, объединив Query Store и SSMS Copilot. Демонстрация включала PHP-программу, которая увеличивала размер таблицы, вызывая изменения производительности и различные планы выполнения запросов. Ключевым наблюдением стало резкое увеличение времени выполнения запроса при том же идентификаторе плана, что указывало на деградацию в рамках плана. Сессия показала, как Copilot может направлять расследования, переходя от режима "Запрос" к режиму "Агент", и как эти процессы могут быть сохранены в виде многократно используемых навыков. Query Store предоставлял исторические данные о производительности, в то время как Copilot помогал анализировать эти данные и принимать решения о дальнейших действиях. Практическая демонстрация использовала PHP-программу для имитации различных проблем производительности путем поэтапного добавления записей в таблицу. По мере увеличения объема данных планы выполнения и производительность запроса dbo.GiveNotes менялись. Детальное сравнение выявило значительное увеличение ЦП, продолжительности и логических чтений для одного идентификатора плана, даже до появления нового плана. Расследование было сосредоточено на построении временной шкалы изменений и понимании совокупного влияния факторов, влияющих на рабочую нагрузку. Взвешенные средние значения были важны для точной оценки производительности в различных интервалах и при разном количестве выполнений. Увеличение логических чтений указывало на проблемы с обработкой данных и путями доступа. Сессия исследовала три способа взаимодействия с Copilot: режим "Запрос" для управляемых вопросов, режим "Агент" для автономной диагностики и многократно используемые навыки агента для стандартизированных расследований. Был разработан пакет "SQL Performance Investigator", инструктирующий агента выявлять факторы, анализировать историю планов, проверять деградацию в рамках планов и исследовать избирательность, статистику и индексы. Предложенный индекс был оценен, но его фактическое улучшение требовало дальнейшей проверки на сопоставимой рабочей нагрузке. Основной вывод заключался в том, что понимание изменений производительности требует изучения как различий между планами, так и вариаций в истории одного плана.