В реальной эксплуатации - применимо с существенными ограничениями.
В реальной эксплуатации - применимо с существенными ограничениями.

Проблема

Имеется 2 виртуальные машины в облачном хранилище - версия СУБД одинаковая, гипервизор один , других ВМ в гипервизоре - нет.

Производительность СУБД

Разница в производительности СУБД не превышает 2.5%
Разница в производительности СУБД не превышает 2.5%

Среднее время выполнения тестового запроса

Разница непрерывно растет и достигает 80%
Разница непрерывно растет и достигает 80%

В результате - производительность СУБД практически не отличается , а среднее время выполнения тестового запроса отличается кардинально. Как такое возможно ?

Причина

Использование при расчета значение mean_exec_time среднего арифметического .

Среднее арифметическое не всегда является идеальным показателем. Например, если ваши данные содержат очень высокие или низкие значения, они могут сильно исказить среднее. В таких случаях рассмотрите использование других статистических мер.

Для иллюстрации проблемы был проведен простой эксперимент

Серия запусков тестового запроса с фиксацией времени выполнения и искусственным выбросом(замедление выполнения) .

Результаты

Всего 1(один) выброс
Всего 1(один) выброс

  1. id duration

  2. 37 4602

  3. 38 14581

  4. 39 4610

  5. 40 4569

  6. 41 4685

  7. 42 4666

  8. 43 4680

  9. 44 4621

  10. 45 4637

mean_exec_time = 5651.6708999

Достаточно всего одного выброса , что бы значение метрики весьма существенно изменилось .

Решение проблемы

Использование в качестве среднего значение - медианы

Медиана — это значение, которое делит упорядоченный набор данных на две равные части. Другими словами, половина значений в наборе данных меньше медианы, а другая половина — больше. Медиана является центральным значением в наборе данных.

В данном эксперименте медиана = 4637 . Данное значение вполне соответствует значению подсказываемому здравым смыслом при анализе результатов наблюдений.

Единичный выброс не влияет на значение медианы
Единичный выброс не влияет на значение медианы

Итог

Разница между значением длительности выполнения тестового запроса и mean_exec_time для штатной работы СУБД составляет от 17 до 19%.

Разница между значением длительности выполнения тестового запроса и медианой для штатной работы СУБД составляет от -1.5 до 1%.

Какое значение использовать для усреднения показателей - очевидно.

В дальнейшем, при анализе производительности, метрика mean_exec_time ( представления типа pg_stat_statments/pgpro_stats) исключается из показателей производительности СУБД.

При проведении анализа производительности СУБД нет задачи оценить стабильность работы( облачная инфраструктура в принципе нестабильна и подвержена существенным влияниям внешних факторов), есть задача оценить производительность СУБД.