The post has been translated automatically. Original language: Russian
Taken from the main technical channel of Postgres DBA (edits are possible in the original article).
GitHub - pg_expecto complex for statistical performance analysis and PostgreSQL database testing

List of terms and definitions
1. Markov chain is a mathematical model describing a sequence of events where the probability of transition from one state to another depends only on the current state of the system (Markov property).
2. System state — a specific value of the observed characteristic at a certain point in time (for example, the level of correlation between the operating speed and the number of DBMS waits).
3. The transition matrix is a square matrix, the elements of which set the probabilities of transition from one state of the Markov chain to another in one step.
4. Correlation (in the context of DBMS) — the statistical relationship between two performance indicators (for example, operational speed and the number of DBMS waits).
5. Positive correlation is a situation where the growth of one indicator is accompanied by the growth of another (for example, as the load increases, both the operating speed and the number of DBMS expectations simultaneously increase — up to a certain limit).
6. Negative correlation is a situation where an increase in one indicator is accompanied by a decrease in another (for example, an increase in expectations is accompanied by a drop in operating speed — a sign of resource exhaustion).
7. Mean Time to Failure (MTTF) — the predicted time until the critical state of the system occurs at the current load profile.
8. Exponential forgetting (exponential smoothing) — a method of model adaptation, in which the weight of old data gradually decreases, and new data increases. Allows the model to adapt to changes in the load profile.
9. Stationarity is the property of the probabilistic characteristics of a process to remain unchanged over time. In the context of Markov chains, it assumes the stability of the probabilities of transitions between states.
10. Hidden Markov Model (HMM) — an extension of the classical Markov chain, where the observed states depend on the hidden (not directly observable) states of the system.
11. Discretization is the process of converting a continuous range of values into a finite number of discrete states (for example, dividing the correlation range into intervals).
12. Wait event — the type of event that the serving process is waiting for, if such waiting takes place.
13. Load profile — a characteristic of the workload on a DBMS, including the types of requests, their frequency, amount of data, etc.
14. Predictive monitoring is an approach to monitoring based on predicting future system conditions using mathematical models (including Markov chains).
15. Adaptive Alerting is an alert system that automatically adjusts trigger thresholds based on the analysis of historical data and forecasts.

Introduction
Markov-RUWIKI chain - detailed theoretical description
Markov Chain - RuTube - Veritasium - history and application
PostgreSQL database Performance Degradation Indicator - DBMS status
The process of changing the performance of PostgreSQL DBMS has a Markov property and can be described as a Markov chain - proof of the possibility of using a Markov chain for PostgreSQL DBMS
In normal DBMS operation, the correlation between operational speed and expectations is positive or close to zero (in the range from 0 to 1), while a negative correlation, especially approaching -1, is a clear indicator of an impending or already realized performance incident. The exception is when the operating speed increases and expectations decrease, which also leads to the formation of a negative correlation.
Thus, the Markov model based on the correlation coefficient becomes practically oriented: it describes not just "tension", but the probability of transition from a healthy state to an abnormal one.
1. What is being modeled
The status is the Pearson correlation coefficient rounded to a decimal value between operating speed and DBMS expectations.
Normally, the correlation is positive : with a steady increase in load (an increase in the number of connections or the frequency of requests), both the speed and the number of DBMS waits increase simultaneously (simply because the system does more work). This direct relationship gives a correlation in the range from 0 to +1.

Fig.1 Correlation > 0, DBMS operational speed and Expectations are increasing.
When the load decreases , the operating speed decreases , and the DBMS expectations also decrease. It is also a direct dependency.

Fig.2 Correlation > 0, DBMS operational speed and expectations are decreasing.
🟢A possible situation is that the operating speed is increasing and expectations are decreasing . This is a regular situation, although the correlation will be negative.

Fig.3 Correlation < 0 , Operational speed is increasing, DBMS expectations are decreasing.
But as soon as any resource hits the limit and expectations begin to "take away" speed, an increase in expectations begins to be accompanied by a drop in speed — the correlation becomes negative. It is this transition that is critical.

Fig.4 Correlation < 0 , Operating speed decreases, DBMS expectations increase.

The Markov chain describes the dynamics of this relationship: the probabilities of switching from a state, for example, "+0.4" to "+0.2", and then to "-0.3".
The negative zone (-1...0), subject to a decrease in productivity, is interpreted as a set of abnormal conditions that require attention.
2. Practical application
2.1 Forecasting incidents based on a slide into the negative zone
Knowing the current correlation state, the model predicts with what probability the system will be in the critical zone after k steps.
This allows you to calculate the "Mean Time to Failure (MTTF)" for the current load profile.
🎯 2.2 Classification incidents by type of expectation
Different types of expectations lead to different trajectories of degradation.
For example:
- The transition from "+0.5" to "-0.7" with IO dominance indicates a disk bottleneck.
- The drift to "-0.4" by Lock is for competitive access.
- The construction of separate circuits for each class of expectations turns the model into a multi- channel root cause detector.
2.3 Early diagnosis of "drift" before classical thresholds are triggered
Classical monitoring relies on fixed limits (tps < X, waiting time > Y).
The correlative Markov model can signal a problem when the metrics themselves are still far from the thresholds.
For example, the transition from the state of "+0.6" to "+0.2" is not an accident in itself, but if the matrix shows that "+0.2" is highly likely to result in "-0.5", this gives a margin of time.
2.4 Reduced complexity for the operator and automation
Instead of graphs and searching for anomalies in their discrepancy, we get one simple indicator panel.:
- "The system is in state +0.3 (OK)",
- "The system has moved to -0.1 (WARNING)",
- ⚠️"System B -0.8 with 0.9 retention probability (ALARM)".
This greatly simplifies both manual assessment and automatic decision-making.
3. Expediency and applicability — a critical look
3.1 Strengths
- The natural interpretation of risk is that positive correlation = normal, negative correlation and decreased productivity = problem. The model directly reflects this dichotomy.
- Proactivity: the prediction horizon is determined by the order of the chain and the length of the observation window, but in any case, it is ahead of the trigger according to "raw" metrics.
- Scalability: you can build separate chains for different types of expectations and even for speed–specific wait event combinations by creating a vulnerability map of the system.
3.2 Fundamental limitations and complexities
3.2.1 Markov property and chain order
The dynamics of correlation can have "inertia": the correlation value does not always depend only on the previous step. With 90% of the time in the positive zone, this is especially noticeable: the system can fluctuate for a long time around +0.4...+0.6, and a criterion for the significance of the transition is needed. You may need a second-order chain or a hidden Markov model, which complicates the calculations.
3.2.2. Discretization and informativeness
The range 0...+1 with a step of 0.1 gives 11 healthy states. In typical operation, they can all be populated, but the difference between "+0.3" and "+0.4" may not be of practical value.
Instead of uniform sampling, we can consider aggregation:
- The "Healthy" zone (0...+1);
- "Undefined/warning" zone (-0.2...+0.1);
- The "Emergency" zone (-1...-0.3).
This will reduce the dimension of the matrix and increase the statistical reliability of estimates, but it may lose the nuance of early warning.
3.2.3 Stationarity and adaptation
Load distribution (day/night, weekdays/weekends) changes the nature of transitions. A matrix trained on daytime data may consider the transition to "-0.1" an anomaly, whereas at night it is normal due to a decrease in overall performance.
Decisions:
- 1️⃣Storing and switching between multiple models by time/pattern.
- 2.Online adaptation with exponential forgetting of outdated data.
📋4. The result
Taking into account the actual correlation distribution (90% of the time in the 0...1 zone), the idea becomes not just analytically interesting, but practically powerful.: The Markov chain directly models the "health → illness" transition.
This solves the key task of predictive monitoring - early detection of degradation, expressed in the language of probabilities.
The expediency is very high for systems with well-defined load patterns, where small investments in a non-standard solution are acceptable. The model can become the basis for adaptive alerting with a warning horizon that is unattainable when analyzing only speed or waiting thresholds.
Practical applicability is limited so far only by the lack of ready- made tools and the requirement of careful engineering. But if we consider step-by-step implementation, this is an absolutely realistic path.
The model will be particularly valuable in environments where incidents develop gradually rather than occurring instantly, in which case the predictive power of correlation transitions will be maximized.

Implementation of the Markov chain in the pg_expecto v.10 project
Markov chain implementation for predicting PostgreSQL database performance incidents
The first practical example of using a Markov chain

Additionally
Review of publications on the use of Markov chains in PostgreSQL
Взято с основного технического канала Postgres DBA (возможны правки в исходной статье).
GitHub - Комплекс pg_expecto для статистического анализа производительности и тестирования СУБД 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. Адаптивный алертинг — система оповещений, которая автоматически настраивает пороги срабатывания на основе анализа исторических данных и прогнозов.

Введение
Цепь Маркова - РУВИКИ - подробное теоретическое описание
Цепь Маркова - RuTube - Veritasium - история и применение
Индикатор деградации производительности СУБД PostgreSQL - состояние СУБД
Процесс изменения производительности СУБД PostgreSQL обладает марковским свойством и может быть описан как цепь Маркова - доказательство возможности применения цепи Маркова для СУБД PostgreSQL
В нормальном режиме функционирования СУБД корреляция между операционной скоростью и ожиданиями является положительной либо близкой к нулю (в диапазоне от 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» может не нести практической ценности.
📋Вместо равномерной дискретизации можно рассмотреть агрегацию:
- Зона «Здоровая» (0…+1);
- Зона «Неопределённая/предупреждение» (-0.2…+0.1);
- Зона «Аварийная» (-1…-0.3).
Это уменьшит размерность матрицы и повысит статистическую надёжность оценок, но может потерять нюанс раннего предупреждения.
3.2.3 Стационарность и адаптация
Распределение нагрузки (дневное/ночное, будни/выходные) меняет характер переходов. Матрица, обученная на дневных данных, может считать переход в «-0.1» аномалией, тогда как в ночное время это нормально из-за снижения общей производительности.
Решения:
- 1️⃣Хранение и переключение между несколькими моделями по времени/шаблону.
- 2️⃣Онлайн-адаптация с экспоненциальным забыванием устаревших данных.
📋4. Итог
С учетом фактического распределения корреляции (90% времени в зоне 0…1) идея становится не просто аналитически любопытной, а практически мощной: марковская цепь прямо моделирует переход «здоровье → болезнь».
ℹ️Это решает ключевую задачу предиктивного мониторинга — раннее обнаружение деградации, выраженное на языке вероятностей.
ℹ️Целесообразность очень высока для систем с чётко выраженными паттернами нагрузки, где допустимы небольшие вложения в нестандартное решение. Модель способна стать основой для адаптивного алертинга с горизонтом предупреждения, который недостижим при анализе только пороговых значений скорости или ожидания.
ℹ️Практическая применимость сдерживается пока только отсутствием готовых инструментов и требованием аккуратной инженерии. Но если рассматривать поэтапное внедрение , это абсолютно реальный путь.
ℹ️Особую ценность модель будет представлять в средах, где инциденты развиваются постепенно, а не возникают мгновенно — тогда прогнозная сила корреляционных переходов проявится максимально.

Реализация цепи Маркова в проекте pg_expecto v.10
Реализация цепи Маркова для прогнозирования инцидентов производительности СУБД PostgreSQL
Первый практический пример использования цепи Маркова
