Добавить в корзинуПозвонить
Найти в Дзене
Postgres DBA

Доказательство возможности описания СУБД PostgreSQL как Марковского процесса

Материал полностью сгенерирован нейросетью DeepSeek.
Марковское свойство — свойство процесса, при котором будущее состояние зависит только от настоящего, а не от предшествующей истории.
Требуется доказать , что процесс изменения производительности СУБД PostgreSQL обладает марковским свойством и может быть описан как цепь Маркова :
состояние - вектор [ r , os_trend , wait_trend] ,
Оглавление

Материал полностью сгенерирован нейросетью DeepSeek.

Определение

Марковское свойство — свойство процесса, при котором будущее состояние зависит только от настоящего, а не от предшествующей истории.

Требуется доказать , что процесс изменения производительности СУБД PostgreSQL обладает марковским свойством и может быть описан как цепь Маркова : 

состояние - вектор [ r , os_trend , wait_trend] ,

  • где r коэффициент корреляции между операционной скоростью и ожиданиями субд округлённый до десятых долей ,
  • os_trend направление тренда операционной скорости (-1 снижение , 0 горизонтальный , 1 рост) ,
  • wait_trend направление тренда ожиданий (-1 снижение , 0 горизонтальный , 1 рост) .

Периодичность сбора данных и обучения = 1 минута . Данные сглаживаются медианным сглаживанием с окном 1 час. Аварийной ситуацией считается комбинация : r < 0 & os_trend < 0.

—————

Доказательство

Чтобы доказать, что описанный процесс обладает марковским свойством, нужно показать: будущее состояние системы (через 1 минуту) зависит только от текущего состояния, а не от всей предшествующей истории.

Иными словами, в момент времени t вектор состояния St = [r_t , os_trend_t , wait_trend_t] содержит всю информацию, необходимую для предсказания St+1 .

1. Построение состояния как достаточной статистики

Компоненты вектора вычисляются по временному окну глубиной 1 час с медианным сглаживанием и шагом дискретизации 1 минута:

  •  rt — коэффициент корреляции между скоростью выполнения операций и временем ожиданий в СУБД за последний час, округлённый до десятых.
  • os_trend_t in {-1,0,1} — направление линейного тренда операционной скорости (сглаженной) за тот же период.
  • wait_trend_t in {-1,0,1} — направление тренда времени ожиданий.

Все эти величины агрегируют ровно 60 последних минутных наблюдений.

В момент предшествующая история за пределами часового окна уже не используется и не влияет на текущие значения метрик. Следовательно, состояние St — это сжатое, но полное описание недавнего поведения СУБД.

2. Независимость будущего от прошлого при фиксированном настоящем

При переходе к St+1 происходит сдвиг окна на 1 минуту: добавляется новый минутный срез, а срез часовой давности исключается. Новые данные (минутный срез) порождаются внутренними процессами PostgreSQL и текущей нагрузкой.

Ключевой аргумент:

  • Внутренняя динамика СУБД (состояние кешей, пула соединений, выполняемые запросы, блокировки) в момент полностью определяет ближайшее будущее поведение метрик. Никакие события старше 1 часа непосредственно на это поведение не влияют, минуя текущие значения метрик.
  • Сглаживание и тренды уже вобрали в себя всю историю, необходимую для оценки текущей тенденции. Корреляция rt также отражает мгновенную линейную связь двух временных рядов именно за последний час.
  • При известном St дополнительная информация о том, как именно система пришла в это состояние (например, форма колебаний внутри часового окна), не улучшает предсказание St+1 , потому что часовое окно уже «забыло» детали старше 1 часа, а внутриоконная динамика исчерпывающе описана тремя агрегированными параметрами.

Таким образом, условное распределение P(St+1|St, St-1, ) совпадает с P(St+1 | S_t) . Это и есть определение марковского свойства.

3. Дискретное пространство состояний и цепь Маркова

  •  rt округлён до десятых, поэтому принимает конечное число значений на отрезке [-1, 1] (21 возможное значение).
  • os_trend_t и wait_trend_t принимают по 3 значения.

 Общее число состояний конечно: 21 x 3 x 3 = 189 . Переходы происходят каждую минуту (дискретное время). Следовательно, последовательность St является конечной цепью Маркова с дискретным временем.

4. Аварийное состояние в терминах цепи

По определению, аварийная ситуация — это любое состояние, где одновременно:

rt < 0, os_trend_t = -1, wait_trend_t = 1 

В пространстве состояний это конкретное подмножество, которое можно выделить для мониторинга и прогнозирования вероятности попадания в него через k шагов стандартными методами теории марковских цепей (матрица переходных вероятностей).

Вывод

Благодаря часовому окну агрегации, сглаживанию и дискретизации компонент, текущий вектор [ r, os_trend, wait_trend ] является достаточной статистикой всей недавней истории СУБД.

Поэтому процесс изменения производительности PostgreSQL в такой модели обладает марковским свойством и может быть корректно описан как цепь Маркова.

Аварийная комбинация выделяется как легко идентифицируемое подмножество состояний этой цепи.