Первая статья серии исследований о возможности применения цепи Маркова для статистического анализа производительность СУБД PostgreSQL.
1. Цепь Маркова — математическая модель, описывающая последовательность событий, где вероятность перехода из одного состояния в другое зависит только от текущего состояния системы (марковское свойство).
2. Состояние системы — конкретное значение наблюдаемой характеристики в определённый момент времени (например, уровень корреляции между операционной скоростью и количеством ожиданий СУБД).
3. Матрица переходов — квадратная матрица, элементы которой задают вероятности перехода из одного состояния цепи Маркова в другое за один шаг.
4. Корреляция (в контексте СУБД) — статистическая взаимосвязь между двумя показателями производительности ( например операционной скоростью и количеством ожиданий СУБД).
5. Положительная корреляция — ситуация, когда рост одного показателя сопровождается ростом другого (например, при увеличении нагрузки одновременно растут и операционная скорость , и количество ожиданий СУБД — до определённого предела).
6. Отрицательная корреляция — ситуация, когда рост одного показателя сопровождается снижением другого (например, рост ожиданий сопровождается падением операционной скорости — признак исчерпания ресурса).
7. Среднее время до отказа (Mean Time to Failure, MTTF) — прогнозируемое время до наступления критического состояния системы при текущем профиле нагрузки.
8. Экспоненциальное забывание (экспоненциальное сглаживание) — метод адаптации модели, при котором вес старых данных постепенно снижается, а новых — повышается. Позволяет модели адаптироваться к изменениям профиля нагрузки.
9. Стационарность — свойство вероятностных характеристик процесса оставаться неизменными во времени. В контексте цепей Маркова предполагает стабильность вероятностей переходов между состояниями.
10. Скрытая марковская модель (Hidden Markov Model, HMM) — расширение классической цепи Маркова, где наблюдаемые состояния зависят от скрытых (не наблюдаемых напрямую) состояний системы.
11. Дискретизация — процесс преобразования непрерывного диапазона значений в конечное число дискретных состояний (например, разбиение диапазона корреляции на интервалы).
12. Ожидание (wait event) — тип события, которого ждёт обслуживающий процесс, если такое ожидание имеет место.
13. Профиль нагрузки — характеристика рабочей нагрузки на СУБД, включающая типы запросов, их частоту, объём данных и т. п.
14. Предиктивный мониторинг — подход к мониторингу, основанный на прогнозировании будущих состояний системы с использованием математических моделей (в т. ч. цепей Маркова).
15. Адаптивный алертинг — система оповещений, которая автоматически настраивает пороги срабатывания на основе анализа исторических данных и прогнозов.
Введение
В нормальном режиме функционирования СУБД корреляция между операционной скоростью и ожиданиями является положительной либо близкой к нулю (в диапазоне от 0 до 1), тогда как отрицательная корреляция, в особенности приближающаяся к –1, представляет собой явный индикатор надвигающегося или уже реализовавшегося инцидента производительности. Исключением выступает случай, когда операционная скорость возрастает, а ожидания снижаются, что также приводит к формированию отрицательной корреляционной связи.
Таким образом, марковская модель на основе коэффициента корреляции становится практически ориентированной: она описывает не просто «напряжение», а вероятность перехода из здорового состояния в аномальное.
1. Что моделируется
Состояние — округлённый до десятичного значения коэффициент корреляции Пирсона между операционной скоростью и ожиданиями СУБД.
🟢В норме корреляция положительная : при штатном росте нагрузки (увеличении числа подключений или частоты запросов) одновременно растёт и скорость, и количество ожиданий СУБД (просто потому, что система выполняет больше работы). Эта прямая зависимость даёт корреляцию в диапазоне от 0 до +1.
Рис.1 Корреляция > 0 , Операционная скорость и Ожидания СУБД - растут.
🟢При снижении нагрузки - операционная скорость снижается , и ожидания СУБД также снижаются. Это также прямая зависимость.
Рис.2 Корреляция > 0 , Операционная скорость и ожидания СУБД - снижаются.
🟢Возможна ситуация - операционная скорость растет и ожидания снижаются . Это штатная ситуация , хотя корреляция будет отрицательной.
Рис.3 Корреляция < 0 , Операционная скорость - растет , Ожидания СУБД - снижаются.
🟡Но, как только какой-либо ресурс упирается в предел и ожидания начинают «отнимать» скорость, рост ожиданий начинает сопровождаться падением скорости — корреляция становится отрицательной. Именно этот переход и является критическим.
Рис.4 Корреляция < 0 , Операционная скорость снижается, Ожидания СУБД - растут.
Марковская цепь описывает динамику этой связи: вероятности переключения из состояния, например, «+0.4» в «+0.2», а затем в «-0.3».
Отрицательная зона (−1…0) при условии снижения производительности , трактуется как множество аномальных состояний, требующих внимания.
2. Практическое применение
🔮 2.1 Прогнозирование инцидентов на основе сползания в отрицательную зону
Зная текущее состояние корреляции, модель предсказывает, с какой вероятностью через k шагов система окажется в критической зоне.
Это позволяет вычислить "Среднее время до отказа (Mean Time to Failure, MTTF)" для текущего профиля нагрузки.
🎯 2.2 Классификация инцидентов по типу ожиданий
Разные типы ожиданий дают разные траектории деградации.
Переход из «+0.5» в «-0.7» с доминированием IO указывает на дисковое узкое место.
Дрейф в «-0.4» по Lock — на конкурентный доступ.
ℹ️Построение отдельных цепей для каждого класса ожиданий превращает модель в многоканальный детектор первопричин.
🛡️ 2.3 Ранняя диагностика «дрейфа» до срабатывания классических порогов
Классический мониторинг опирается на фиксированные лимиты (tps < X, время ожидания > Y).
ℹ️Корреляционная марковская модель может сигнализировать о проблеме, когда сами метрики ещё далеки от порогов.
Например, переход из состояния «+0.6» в «+0.2» сам по себе не является аварией, но если матрица показывает, что из «+0.2» с высокой вероятностью следует «-0.5» это даёт запас времени.
🧠 2.4 Снижение сложности для оператора и автоматики
Вместо графиков и поиска аномалий в их расхождении, мы получаем одну простую индикаторную панель:
✅«Система в состоянии +0.3 (OK)»,
❗«Система перешла в -0.1 (WARNING)»,
⚠️«Система в -0.8 с вероятностью удержания 0.9 (ALARM)».
Это сильно упрощает как ручную оценку, так и автоматическое принятие решений.
3. Целесообразность и применимость — критический взгляд
3.1 Сильные стороны
Естественная интерпретация риска: положительная корреляция = норма, отрицательная и снижение производительности = проблема. Модель прямо отражает эту дихотомию.
Проактивность: горизонт предсказания определяется порядком цепи и длиной окна наблюдения, но в любом случае он опережает срабатывание по «сырым» метрикам
Масштабируемость: можно построить отдельные цепи для разных типов ожиданий и даже для комбинаций «скорость – конкретный wait event», создав карту уязвимостей системы.
3.2 Фундаментальные ограничения и сложности
3.2.1 Марковское свойство и порядок цепи
Динамика корреляции может обладать «инерцией»: значение корреляции не всегда зависит только от предыдущего шага. При 90% времени в положительной зоне это особенно заметно: система может долго флуктуировать около +0.4…+0.6, и нужен критерий значимости перехода. Возможно, потребуется цепь второго порядка или скрытая марковская модель, что усложняет вычисления.
3.2.2. Дискретизация и информативность
Диапазон 0…+1 с шагом 0.1 даёт 11 здоровых состояний. При типовой эксплуатации они все могут быть заселены, но различимость между «+0.3» и «+0.4» может не нести практической ценности.
📋Вместо равномерной дискретизации можно рассмотреть агрегацию:
Это уменьшит размерность матрицы и повысит статистическую надёжность оценок, но может потерять нюанс раннего предупреждения.
3.2.3 Стационарность и адаптация
Распределение нагрузки (дневное/ночное, будни/выходные) меняет характер переходов. Матрица, обученная на дневных данных, может считать переход в «-0.1» аномалией, тогда как в ночное время это нормально из-за снижения общей производительности.
📋4. Итог
С учетом фактического распределения корреляции (90% времени в зоне 0…1) идея становится не просто аналитически любопытной, а практически мощной: марковская цепь прямо моделирует переход «здоровье → болезнь».
ℹ️Это решает ключевую задачу предиктивного мониторинга — раннее обнаружение деградации, выраженное на языке вероятностей.
ℹ️Целесообразность очень высока для систем с чётко выраженными паттернами нагрузки, где допустимы небольшие вложения в нестандартное решение. Модель способна стать основой для адаптивного алертинга с горизонтом предупреждения, который недостижим при анализе только пороговых значений скорости или ожидания.
ℹ️Практическая применимость сдерживается пока только отсутствием готовых инструментов и требованием аккуратной инженерии. Но если рассматривать поэтапное внедрение , это абсолютно реальный путь.
ℹ️Особую ценность модель будет представлять в средах, где инциденты развиваются постепенно, а не возникают мгновенно — тогда прогнозная сила корреляционных переходов проявится максимально.