Найти в Дзене
Postgres DBA

Что общего у инженера по аэродинамике и инженера СУБД ? И при чем тут - производительность СУБД?

В продолжении задач 1) Получать статистически достоверные данные результатов экспериментов по нагрузочному тестированию. 2) Оценить характер изменения производительности СУБД в зависимости от нагрузки . Определить штатные и критичные значения нагрузки на СУБД . 3) Выработать методику позволяющую сравнивать производительность СУБД разной конфигурации и в разной инфраструктуре. В качестве тестового стенда используются тестовые виртуальные машины расположенные в облачном хранилище. Ресурсы виртуальных машин, существенно отличаются: ВМ1 : 1 CPU - очень простой тестовый запрос current_delta = (ROUND( random ())::integer)*10 + 1 ; SELECT ROUND( random ()* 5)::integer  INTO   current_aid ; UPDATE pgbench_accounts SET abalance = abalance + current_delta WHERE  aid = current_aid; ВМ2: 24 CPU - стандартный запрос pgbench current_delta = (ROUND( random ())::integer)*10 + 1 ; SELECT MIN(aid) INTO min_i FROM pgbench_accounts ; SELECT MAX(aid) INTO max_i FROM pgbench_accounts ; SELECT ROUND( r
Оглавление
Исследования в аэродинамической трубе и исследования по нагрузочному тестированию СУБД - суть одно и тоже. Если , подойти к нагрузочному тестированию правильно , с научной точки зрения.
Исследования в аэродинамической трубе и исследования по нагрузочному тестированию СУБД - суть одно и тоже. Если , подойти к нагрузочному тестированию правильно , с научной точки зрения.

Архивный материал. Описанные методики или устарели или не используются.

Задача

В продолжении задач

Необходимо разработать методику анализа производительности СУБД, позволяющую:

1) Получать статистически достоверные данные результатов экспериментов по нагрузочному тестированию.

2) Оценить характер изменения производительности СУБД в зависимости от нагрузки . Определить штатные и критичные значения нагрузки на СУБД .

3) Выработать методику позволяющую сравнивать производительность СУБД разной конфигурации и в разной инфраструктуре.

Реализация

В качестве тестового стенда используются тестовые виртуальные машины расположенные в облачном хранилище.

Ресурсы виртуальных машин, существенно отличаются:

ВМ1 : 1 CPU - очень простой тестовый запрос

current_delta = (ROUND( random ())::integer)*10 + 1 ;
SELECT ROUND( random ()* 5)::integer  INTO   current_aid ;
UPDATE pgbench_accounts SET abalance = abalance + current_delta WHERE  aid = current_aid;

ВМ2: 24 CPU - стандартный запрос pgbench

current_delta = (ROUND( random ())::integer)*10 + 1 ;
SELECT MIN(aid) INTO min_i FROM pgbench_accounts ;
SELECT MAX(aid) INTO max_i FROM pgbench_accounts ;
SELECT ROUND( random ()* max_i)::integer  INTO   current_aid ;
UPDATE pgbench_accounts SET abalance = abalance + current_delta WHERE  aid = current_aid;
SELECT abalance INTO test_rec FROM pgbench_accounts WHERE aid = current_aid ;
SELECT MIN(tid) INTO min_i FROM pgbench_tellers ;
SELECT MAX(tid) INTO max_i FROM pgbench_tellers ;
SELECT ROUND( random ()* max_i)::integer INTO   current_tid ;
UPDATE pgbench_tellers SET tbalance = tbalance + current_delta WHERE tid = current_tid ;
SELECT MIN(bid) INTO min_i FROM pgbench_branches ;
SELECT MAX(bid) INTO max_i FROM pgbench_branches ;
SELECT ROUND( random ()* max_i)::integer  INTO   current_bid ;
UPDATE pgbench_branches SET bbalance = bbalance + current_delta WHERE bid = current_bid ;

В качестве нагрузки используется стандартный инструмент pgbench. Количество одновременных подключений (параметр —clients ) растет экспоненциально .

Режимы работы СУБД

По ходу предварительных исследований результатов стресс тестов и анализа эпюр производительности - можно выделить 3 режима работы СУБД : 1) Зелёный режим : максимальная производительность , ожидания минимальны , время отклика минимально . 2) Жёлтый режим: производительность СУБД начинает снижаться , но не деградирует. Рост ожиданий , незначительное увеличение времени отклика . 3) Красный режим…
Статистика для PostgreSQL DBA11 ноября 2024

Использование аэродинамической терминологии при экспериментах по производительности СУБД

Развивая идею

Итак , картина сложилась почти полностью, благодаря проведению аналогии между аэродинамикой и DBA. Подъёмная сила Y = операционная скорость СУБД. Сила сопротивления X = ожидания СУБД. Угол атаки alpha = нагрузка на СУБД. Коэффициент Сy= отношение операционной скорости к нагрузке на СУБД. Коэффициент Cx = отношение ожиданий к нагрузке на СУБД. Эпюра Cy по Cx = отношение операционной скорости к…
Статистика для PostgreSQL DBA16 ноября 2024

Если провести аналогию продувки модели в аэродинамической трубе с нагрузочным тестированием СУБД получается следующая , занимательная картина, очень грубо и просто для красивой аналогии , конечно:

Подъёмная сила Y = операционная скорость СУБД.
Сила сопротивления X = ожидания СУБД.
Угол атаки alpha = нагрузка на СУБД.
Коэффициент Сy= отношение операционной скорости к нагрузке на СУБД.
Коэффициент Cx = отношение ожиданий к нагрузке на СУБД.

Можно добавить и провести еще аналогии:

  • Ламинарное обтекание профиля - Зеленый режим работы СУБД
  • Турбулентный режим обтекания и начало срыва потока - Желтый режим работы
  • Срыв потока, переход в критичный режим - Красный режим работы

Нагрузка на СУБД (угол атаки alpha/характер обтекания профиля)

ВМ1 - нагрузка на СУБД
ВМ1 - нагрузка на СУБД
ВМ2 - нагрузка на СУБД
ВМ2 - нагрузка на СУБД

Средние значение нагрузки по режимом работы: ВМ1 / ВМ2

-Зеленый: 3,5556 / 42,9221

-Желтый: 5,3784 / 75,4127

-Красный: 13,0508 / 114,7273

Отношение операционной скорости к нагрузке (коэффициент Cy)

ВМ1 - коэффициент Cy
ВМ1 - коэффициент Cy
ВМ2 - коэффициент Cy
ВМ2 - коэффициент Cy

Средние значение Cy по режимам работы: ВМ1 / ВМ2

-Зеленый: 1 860,8859 / 3 088,9647

-Желтый: 658,8232 / 437,5932

-Красный: 102,2024 / 237,8892

Важное замечание - в данных условиях теста операционная скорость ВМ1 и ВМ2 одного порядка . Можно построить тестовый сценарий таким образом, что операционные скорости бы совпали. Т.е. в случае pgbench можно настроить тестовые запросы и значение параметра --connect таким образом, что TPS будет совпадать . Следует ли из факта совпадения TPS эквивалентность производительности ? Конечно же нет, с точки зрения здравого смысла. Что и доказано в результате текущих экспериментов. Т.е. еще раз - pgbench не бенчмарк. С бенчмарками СУБД , вернее с теми цифрами которые они показывают и с теми методиками как их проводят, вообще все грустно и печально(как можно ориентироваться на цифры бенчмарка в течении 10 минут !? ). Но, это уже другая история.

Отношение ожиданий СУБД к нагрузке( коэффициент Cx)

ВМ1 - коэффициент Cx
ВМ1 - коэффициент Cx
ВМ2 - коэффициент Cx
ВМ2 - коэффициент Cx

Средние значение Cx по режимам работы: ВМ1 / ВМ2

-Зеленый: 635,2222 / 131,2646

-Желтый: 1 110,8684 / 181,1227

-Красный: 2 207,7236 / 366,8534

Результаты решения поставленных задач эксперимента

1) Получать статистически достоверные данные результатов экспериментов по нагрузочному тестированию - полученные значения являются результатом статистической обработки совокупности данных. После применения медианного сглаживания с периодом 1 час данные, выбросы отсутствуют.

2) Оценить характер изменения производительности СУБД в зависимости от нагрузки . Определить штатные и критичные значения нагрузки на СУБД - определены характер влияния нагрузки на производительность СУБД и отличия влияния нагрузки на производительность для конкретной СУБД.

3) Выработать методику позволяющую сравнивать производительность СУБД разной конфигурации и в разной инфраструктуре - производительность СУБД можно сравнивать для разных конфигураций и инфраструктуры при проведении одинаковых тестовых сценариев. В данном эксперименте для штатной работы производительность более мощной СУБД в 9 раз выше , по сравнению с более слабой виртуальной машиной.

Послесловие. Необходимый экскурс в аэродинамику

Поляра крыла — это график зависимости подъёмной силы и лобового сопротивления, точнее их коэффициентов, при разных углах атаки (направление крыла к встречным потокам ветра во время полёта). 1

Для построения поляры крыло (или его модель) продувается в аэродинамической трубе при различных углах атаки. При продувке для каждого угла атаки аэродинамическими весами замеряются величины подъёмной силы Y и силы лобового сопротивления Q. Определив величины сил Y и Q для данного профиля, вычисляют их аэродинамические коэффициенты. 1

Поляра крыла нужна для аэродинамического расчёта самолёта, так как по ней можно определить все основные аэродинамические характеристики крыла. 3 Например, по поляре можно понять, под каким углом крыла самый выгодный (экономически) для самолёта взлёт и приземление, а под каким — опасно, так как может образоваться срыв потока (сильные завихрения над верхней частью крыла). 1

Поляра — графическая зависимость коэффициента подъёмной силы и коэффициента лобового сопротивления от различных углов атаки. Каждая точка кривой соответствует определённому углу атаки, который часто обозначается на графике в виде параметра[1].

График называется полярой, так как с точки зрения физического смысла целесообразно рассматривать его в полярных координатах. В этом случае радиальная координата пропорциональна полной аэродинамической силе, действующей на аэродинамический объект, а тангенс полярного угла равен аэродинамическому качеству K.

Рувики

--------------------------------------

Возникает закономерный вопрос:

Как построить график в полярных координатах для производительности СУБД ? Когда определенной нагрузке (аналог угла атаки) будет соответствовать значение коэффициента Cy (отношение операционной скорости к нагрузке на СУБД) и значение коэффициента Cx (отношение ожиданий к нагрузке на СУБД).

Поляра профиля P-III-15
Поляра профиля P-III-15

Дополнительно о поляре крыла