Отправьте статью сегодня! Журнал выйдет ..., печатный экземпляр отправим ...
Опубликовать статью

Молодой учёный

Классификация проблем планов выполнения запросов MS SQL Server методами машинного обучения

23.10.2026
4
Поделиться
Аннотация
В статье предложен подход к автоматическому распознаванию причин неэффективности планов выполнения запросов MS SQL Server без вмешательства в ядро СУБД. Рассмотрены пять классов проблем, система из 62 признаков плана выполнения и истории запроса, разметка обучающей выборки по фактическому эффекту исправления и гибридная схема классификации. На демонстрационной базе данных гибридная логистическая регрессия на ранее не встречавшихся запросах превзошла эвристические правила.
Библиографическое описание
Полижаров, Л. Л. Классификация проблем планов выполнения запросов MS SQL Server методами машинного обучения / Л. Л. Полижаров. — Текст : непосредственный // Молодой ученый. — 2026. — № 43 (646). — С. 11-14. — URL: https://moluch.ru/archive/646/141373.


Оптимизатор MS SQL Server выбирает план выполнения запроса по стоимостной модели, входом которой служат оценки числа строк промежуточных результатов. Ошибки этих оценок на порядки встречаются регулярно и являются главной причиной выбора неэффективных планов [1]. Кроме того, производительность снижают отсутствующие индексы, несаргабельные предикаты (функция или неявное преобразование типа над столбцом) и parameter sniffing — повторное использование плана, построенного под нетипичное значение параметра.

SQL Server предоставляет данные для диагностики — фактический план в формате SHOWPLAN_XML и хранилище запросов Query Store, — но не их интерпретацию; встроенные предложения недостающих индексов не проверяются выполнением и не формируются для тривиальных планов [2]. Методы машинного обучения для оптимизации запросов, как правило, требуют замены модулей ядра СУБД [3, 4], что невозможно для коммерческой платформы. Цель работы — построить классификатор, который по плану выполнения запуска запроса определяет тип проблемы, используя только штатные средства SQL Server.

Рассматриваются пять классов: NORMAL (нормальное выполнение), MISSING_INDEX (нет индекса), NON_SARGABLE (несаргабельный предикат), CARD_ERROR (ошибка оценки кардинальности при табличных и локальных переменных) и PARAM_SNIFFING. Каждому классу соответствует штатное исправление: создание индекса, переписывание предиката, подсказка OPTION(RECOMPILE), подсказка Query Store. Внешние признаки классов пересекаются: сканирование крупной таблицы возникает и без индекса, и при несаргабельном предикате, а предложение индекса в плане не гарантирует выигрыша от его создания.

Экспертная разметка по виду плана воспроизводит те же эвристики, которые модель должна превзойти. Поэтому предлагается разметка по фактическому эффекту исправления : для запуска выполняется исправление предполагаемого класса, запрос повторяется с теми же параметрами, и метка класса присваивается, если

(1)

где , — время выполнения до и после исправления. Иначе запуск размечается как NORMAL: проблемой считается не формальный признак в плане, а ситуация, устранимая с измеримым выигрышем.

Каждый запуск описывается 62 признаками четырёх групп: 40 признаков оценочного плана (стоимость, число операторов по типам, оценочная селективность сканирования, предложения индексов, предупреждения о неявном преобразовании), 15 признаков фактического плана (q-ошибки оценки числа строк [5], отношение прочитанных строк к возвращённым, сбросы в tempdb, расхождение значений параметров при компиляции и выполнении), 3 признака истории запроса из Query Store и 4 признака — решения эвристических правил. Последние реализуют гибридную схему : модель получает решение правил как признак и исправляет его там, где правила ошибаются. Сравнивались логистическая регрессия, дерево решений, случайный лес [6] и градиентный бустинг из библиотеки scikit-learn [7]. Качество оценивалось перекрёстной проверкой с исключением шаблона запроса (Leave-One-Group-Out, LOGO): модель проверяется на запросах, которых не было в обучении.

Эксперимент проведён на демонстрационной базе данных интернет-магазина объёмом 8,1 млн строк с неравномерными распределениями данных и уровнем совместимости 140 на SQL Server 2022. Рабочая нагрузка из 36 шаблонов запросов выполнена в две фазы по 816 запусков — до и после исправлений. По критерию (1) проблемными признаны 419 запусков из 1632. Показательно, что из 100 запусков с заведомо ошибочной оценкой кардинальности проблемными оказались только 59: формальный признак в плане не тождествен проблеме производительности. Результаты приведены в таблице 1.

Таблица 1

Качество классификации (macro-F1)

Модель

Новые шаблоны (LOGO)

Случайная 5-кратная проверка

Эвристические правила

0,569

—

Дерево решений

0,453

0,897

Градиентный бустинг

0,531

0,982

Случайный лес

0,567

0,977

Логистическая регрессия

0,690

0,949

Логистическая регрессия (гибрид)

0,697

0,945

Лучший результат на новых шаблонах показала гибридная логистическая регрессия: macro-F1 = 0,70 против 0,57 у правил. Случайная проверка завышает качество до 0,98, поскольку запуски одного шаблона попадают и в обучение, и в проверку; на новых шаблонах ансамбли деревьев запоминают конкретные запросы и уступают линейной модели. Распределение ответов лучшей модели по классам показано на рисунке 1.

Матрица ошибок гибридной модели при проверке на новых шаблонах

Рис. 1. Матрица ошибок гибридной модели при проверке на новых шаблонах

Наибольший выигрыш модель даёт для ошибок кардинальности (F1 = 0,98 против 0,43 у правил): по совокупности признаков она отделяет вредные ошибки оценки от безвредных. Parameter sniffing по единичному плану распознаётся неудовлетворительно (F1 = 0,17) из-за малого числа примеров и сходства неудачного и нормального запусков с одним и тем же планом.

Таким образом, разметка по эффекту исправления и гибридная схема позволяют распознавать проблемы планов выполнения MS SQL Server без вмешательства в ядро СУБД точнее эвристических правил, а оценка качества таких моделей должна выполняться на запросах, не участвовавших в обучении. Перспективным направлением является классификация запросов по агрегатам Query Store, необходимая для распознавания parameter sniffing.

Литература:

  1. How good are query optimizers, really? / V. Leis, A. Gubichev, A. Mirchev [et al.] // Proceedings of the VLDB Endowment. — 2015. — Vol. 9, № 3. — P. 204–215. — DOI 10.14778/2850583.2850594.
  2. Настройка некластеризованных индексов с помощью предложений об отсутствующих индексах // Microsoft Learn: [сайт]. — Redmond: Microsoft, 2025. — URL: https://learn.microsoft.com/ru-ru/sql/relational-databases/indexes/tune-nonclustered-missing-index-suggestions (дата обращения: 19.10.2026).
  3. Database meets artificial intelligence: a survey / X. Zhou, C. Chai, G. Li, J. Sun // IEEE Transactions on Knowledge and Data Engineering. — 2022. — Vol. 34, № 3. — P. 1096–1116. — DOI 10.1109/TKDE.2020.2994641.
  4. Bao: making learned query optimization practical / R. Marcus, P. Negi, H. Mao [et al.] // Proceedings of the 2021 International Conference on Management of Data. — New York: ACM, 2021. — P. 1275–1288. — DOI 10.1145/3448016.3452838.
  5. Moerkotte, G. Preventing bad plans by bounding the impact of cardinality estimation errors / G. Moerkotte, T. Neumann, G. Steidl // Proceedings of the VLDB Endowment. — 2009. — Vol. 2, № 1. — P. 982–993. — DOI 10.14778/1687627.1687738.
  6. Breiman, L. Random forests / L. Breiman // Machine Learning. — 2001. — Vol. 45, № 1. — P. 5–32. — DOI 10.1023/A:1010933404324.
  7. Scikit-learn: machine learning in Python / F. Pedregosa, G. Varoquaux, A. Gramfort [et al.] // Journal of Machine Learning Research. — 2011. — Vol. 12. — P. 2825–2830.
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Молодой учёный №43 (646) октябрь 2026 г.
Скачать часть журнала с этой статьей(стр. 11-14):
Часть 1 (стр. 1-67)
Расположение в файле:
стр. 1стр. 11-14стр. 67
Похожие статьи
Применение индексирования для ускорения запросов к базе данных
Разработка системы обнаружения мошеннических транзакций в финансовых данных с использованием алгоритмов машинного обучения
Применение секционирования таблиц для ускорения запросов к базе данных
Машинное обучение для оценки кандидатов: сравнительный анализ методов
Анализ эффективности применения методов классификации
Использование апостериорного анализа данных для обнаружения аномалий в SQL-запросах к базам данных
Сравнительный анализ подходов к написанию SQL-запросов на основе стандарта качества программной продукции
Методы машинного обучения в классификации качества атмосферного воздуха: от ансамблей к гибридным нейросетевым моделям
Роль процесса оптимизации в работе систем баз данных
Архитектурные подходы к обеспечению качества данных в финансовых системах управленческой отчетности

Молодой учёный