Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
“Рецепт Счастья” — увлекательная игра в жанре «соедини предметы»! Помогите Эмили раскрыть тайны пропавшего родственника, найти сокровища и восстановить её любимое кафе.

Рецепт Счастья

Казуальные, Головоломки, Новеллы

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Postgresql + Производительность

С этим тегом используют

Субд Мониторинг Тестирование Программирование Нейронные сети IT Компьютер Игры Видеокарта Производство Все
54 поста сначала свежее
kznalp
kznalp
5 месяцев назад
Лига Новых Технологий
Серия СУБД PostgreSQL

Сравнение производительности PostgreSQL⁠⁠

Взято с основного технического канала Postgres DBA

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

Обе хороши, но различия все таки есть

Предисловие

Статья не о сравнении ОС, задача статьи - тестирование методологии сравнения производительности СУБД.


Задача

Имеется 2 виртуальных машины с развернутой СУБД PostgreSQL.

Версия СУБД - одинаковая.

ОС - одинаковая. Гипервизор - один.

Различие - системный диск HDD vs. SSD.

Необходимо количественно определить влияние расположения файлов ОС на производительность СУБД. Т.е. определить разницу в накладных расходах для создания серверного процесса для нового соединения .


Реализация эксперимента - сценарии нагрузки

Для оценки производительности и среднего времени выполнения тестового запроса используются 3 сценария нагрузки:

  1. Select only (условный сценарий WEB): нагрузка в виде запроса .

  2. TPC-B (условный сценарий OLTP): Нагрузка в виде транзакции состоящей из UPDATE-SELECT

  3. Heavyweight (условный сценарий DSS): Нагрузка в виде тяжелого запроса SELECT..JOIN..ORDER BY + вычислительная нагрузка

  • Индекс производительности СУБД(CPI) : операционная скорость

  • Время выполнения тестового запроса: скользящая медиана с периодом 1 час.

  • Максимальная нагрузка: 100 одновременных запросов.

  • Рост нагрузки: экспоненциально, с коэффициентом 0.2

Результаты эксперимента

Select only

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

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

Разница производительности не превышает 1%

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

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

Разница времени выполнения не превышает 3.5%

Итог по сценарию Select only :

Производительность СУБД - практически не отличается.

TPC-B

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

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

Разница производительности не превышает 1.5%

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

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

Разница времени выполнения не превышает 2.5%

Итог по сценарию TPC-B

Производительность СУБД - практически не отличается.

Heavyweight

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

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

Проявляется разница в производительности

  • До 54 соединений: разница производительности не превышает 3%

  • 65 - 93: Производительность ВМ2 выше до 17%

  • 111 соединений: резкая деградация производительности . Производительность ВМ2 на 21%

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

Сравнение производительности PostgreSQL Postgresql, Субд, Производительность, Мониторинг, Тестирование, Длиннопост

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

  • До 45 соединений: разница времени выполнения не превышает 2%

  • с 54-111 соединений: Время выполнения тестового на ВМ2 увеличивается до 9%

  • 111 соединений: резкое увеличение времени выполнения тестового запроса. Время выполнения тестового на ВМ2 больше на 22%

Итог по сценарию Heavyweight

При сравнительно небольших нагрузках (до 45-54 соединений) производительность ВМ1 и ВМ2 не отличается.

При высоких нагрузках (54 и более) производительность ВМ2 выше. Однако и время выполнения тестового запросы тоже выше.

Общий итог

1.Только при использовании разных сценариев нагрузки можно получить полную картину производительности СУБД .

2. Для ОС использованной в тесте , при невысокой нагрузке на СУБД, расположение системного диска на HDD или SSD - несущественно .

Показать полностью 6
[моё] Postgresql Субд Производительность Мониторинг Тестирование Длиннопост
20
0
kznalp
kznalp
5 месяцев назад
Лига математиков
Серия СУБД PostgreSQL

О проблеме использования mean_exec_time при анализе производительности PostgreSQL⁠⁠

Взято с основного технического канала Postgres DBA

О проблеме использования mean_exec_time при анализе производительности PostgreSQL Postgresql, Субд, Математика, Мониторинг, Производительность, Длиннопост

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

Проблема

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


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

О проблеме использования mean_exec_time при анализе производительности PostgreSQL Postgresql, Субд, Математика, Мониторинг, Производительность, Длиннопост

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

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

О проблеме использования mean_exec_time при анализе производительности PostgreSQL Postgresql, Субд, Математика, Мониторинг, Производительность, Длиннопост

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

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

Причина

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

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

Как найти среднее арифметическое

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

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

Результаты

О проблеме использования mean_exec_time при анализе производительности PostgreSQL Postgresql, Субд, Математика, Мониторинг, Производительность, Длиннопост

Всего 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 при анализе производительности PostgreSQL Postgresql, Субд, Математика, Мониторинг, Производительность, Длиннопост

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

Итог

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

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

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

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

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

Показать полностью 5
[моё] Postgresql Субд Математика Мониторинг Производительность Длиннопост
3
kznalp
kznalp
5 месяцев назад
Лига Новых Технологий
Серия СУБД PostgreSQL

Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО⁠⁠

Взято с основного технического канала Postgres DBA

Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО Postgresql, Субд, Мониторинг, Производительность, Тестирование, Тест, Длиннопост

До финиша дойдут не все...

Проблема

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

Причина

По умолчанию pgbench тестирует сценарий, примерно соответствующий TPC-B, который состоит из пяти команд SELECT, UPDATE и INSERT в одной транзакции.

Postgres Pro Enterprise : Документация: 16: pgbench : Компания Postgres Professional

Для тестирования использовался именно этот сценарий .

Конфигурация виртуальных машин

ВМ-1

Postgres Pro (enterprise certified) 15.8.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20230605 (Red Soft 11.4.0-1), 64-bit

CPU = 8

RAM = 15

OC = RED 7.3

ВМ-2

Postgres Pro (enterprise certified) 14.11.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit

CPU = 24

RAM = 189

ОС = Astra Linux (Smolensk) 1.6

Итоги теста по сценарию TPC-B

Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО Postgresql, Субд, Мониторинг, Производительность, Тестирование, Тест, Длиннопост

Производительность ВМ-1 существенно выше ВМ-2

Т.е. по итогам данного теста получается - СУБД развёрнутая по шаблону ВМ-1 будет существенно производительнее ?

Что будет , если архитектор примет решение о выборе версии СУБД и запланирует ресурсы инфраструктуры на основании только данного теста ?

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

Одного теста для анализа производительности СУБД и ВМ - недостаточно.

Как было указано в документации:

Однако вы можете легко протестировать и другие сценарии, написав собственные скрипты транзакций.

Что и было сделано.

Для продолжения тестов, был подготовлен сценарий требующий серьезных вычислительных ресурсов - SELECT ... JOIN

Результат тестирования тяжелого запроса

Оценка производительности PostgreSQL - одного сценария НЕДОСТАТОЧНО Postgresql, Субд, Мониторинг, Производительность, Тестирование, Тест, Длиннопост

ВМ-2 СУЩЕСТВЕННО производительнее чем ВМ-1

Все встало на свои места.

ВМ-1 даже не хватило ресурсов при количестве одновременных запросов свыше 160. При этом производительности ВМ-2 существенно выше производительности ВМ-1.

Итог

  1. Нельзя принимать архитектурных решений на основании результатов одного только сценария нагрузочного тестирования

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

Как минимум:

-Select only: оценка скорости чтения данных из СУБД

-Standard: оценка производительности СУБД в условиях конкуренции за блокировки.

-Heavyweight: оценка производительности СУБД при выполнении тяжелых вычислительных и ресурсоемких операций.

Показать полностью 2
[моё] Postgresql Субд Мониторинг Производительность Тестирование Тест Длиннопост
1
kznalp
kznalp
5 месяцев назад
Лига Новых Технологий
Серия СУБД PostgreSQL

CPU Utilization = 100%. Это проблема СУБД?⁠⁠

Взято с основного технического канала Postgres DBA

Продолжение материала CPU Utilization = 100%. Это проблема СУБД?

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Мониторинг, Производительность

Ресурс должен работать !

Просто цифры полученные по ходу стресс тестирования СУБД

ВМ-1

CPU Utilization

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Мониторинг, Производительность

ВМ-1 : Максимальная утилизация CPU = 99% . Средняя = 81%

Commited transactions

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Мониторинг, Производительность

ВМ-1 : Максимальное значение 18 550 . Среднее значение = 12 810

ВМ-2

CPU Utilization

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Мониторинг, Производительность

ВМ-2 : Максимальная утилизация CPU = 28%. Средняя = 14%

Commited transactions

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Мониторинг, Производительность

ВМ-2 : Максимальное значение = 4 470 . Среднее значение = 3 320

Итог

При данной нагрузке и данном сценарии тестирования - мониторить утилизацию CPU не имеет никакого смысла.

ВМ-1 утилизация близка к предельной, но при этом количество зафиксированных транзакций в среднем в 4 раза выше.

Что подтверждает ранее сделанные выводы

Выводы

Мониторить утилизацию CPU отдельно — не имеет смысла. Мониторить надо производительность СУБД, в первую очередь.

Рост утилизации CPU — не инцидент. Снижение производительности СУБД и рост утилизации CPU — инцидент.

Высокая утилизация CPU и рост производительности СУБД — показывает эффективное использование предоставленных ресурсов. Низкая утилизация CPU и низкая производительность СУБД в рабочее время — зря потраченные средства.

Показать полностью 4
[моё] Postgresql Субд Мониторинг Производительность
3
0
kznalp
kznalp
5 месяцев назад
Лига Новых Технологий
Серия СУБД PostgreSQL

CPU Utilization = 100%. Это проблема СУБД?⁠⁠

Взято с основного технического канала Postgres DBA

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

Утилизация CPU = 100%

Обычные последствия после получения оповещения мониторинга «CPU Utilization High» — все в панике, лихорадочные поиски причин, аварийная ситуация, конфколлы и т. д. и т. п. Всё, как положено для ИБД.

Однако, если посмотреть на ситуацию чуть подробнее, то выясняется, что всё не так печально, а даже совсем наоборот и причин для паники — никаких.

Что же происходит с СУБД в данный момент ?

А с СУБД, всё хорошо, достаточно посмотреть на метрики мониторинга.

Самое главное: производительность СУБД — не снижается

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

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

Уже этой информации достаточно, что бы прекратить панику и не тратить рабочее время на поиски черной кошки в темной комнате.

Почему, производительность СУБД не снижается, ведь CPU в полку?

Причина 1: Количество запросов в секунду — не снижается

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

Количество запросов в секунду не снижается с ростом утилизации СУБД

Причина 2: Количество транзакций в секунду — не снижается

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

Количество транзакций в секунду - не снижается с ростом утилизации CPU

Т.е. можно сделать простой вывод‑ работоспособность СУБД не уменьшилась, а скорее наоборот — увеличилась и рост утилизации CPU это лишь следствие. Или другими словами — в данной, конкретной ситуации СУБД максимально эффективно использует предоставленные ресурсы.

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

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

Количество страниц разделяемой области - прочитанных в секунду

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

Количество страниц разделяемой области - записанных в секунду

CPU Utilization = 100%. Это проблема СУБД? Postgresql, Субд, Производительность, Мониторинг, Длиннопост

Количество страниц разделяемой области - измененных в секунду

Выводы

  1. Мониторить утилизацию CPU отдельно — не имеет смысла. Мониторить надо производительность СУБД, в первую очередь.

  2. Рост утилизации CPU — не инцидент. Снижение производительности СУБД и рост утилизации CPU — инцидент.

  3. Высокая утилизация CPU и рост производительности СУБД — показывает эффективное использование предоставленных ресурсов. Низкая утилизация CPU и низкая производительность СУБД в рабочее время — зря потраченные средства.

Показать полностью 7
[моё] Postgresql Субд Производительность Мониторинг Длиннопост
11
kznalp
kznalp
5 месяцев назад
Серия СУБД PostgreSQL

Первый пост⁠⁠

Взято с основного технического канала Postgres DBA

Скоро год , как впервые возникла мысль - "надо рассчитывать производительность СУБД".

Столько прошло с тех пор - несколько вариантов расчета , решение аномалий , погружение в мат.статистику , бан на хабре, непонимание и неприятие коллег и сообщества ...

И вот , похоже первый вариант реально работающей методики - готов . Ну почти готов.

Главное - четкая , понятная и стройная непротиворечивая идея. Хотя конечно, еще очень рано говорить об окончательном решении , но , некоторые моменты внушают осторожный, но твердый оптимизм:
-Расчёты очень простые. Никакой хитрой математики, фокусов и магии. Пара таблиц, несколько хранимых функций .
-Результаты хорошо согласуются с наблюдениями. Чем выше нагрузка и медленнее СУБД - тем ниже значение метрики.

Что можно будет получить в итоге:
-Расчет и анализ производительности отдельного SQL-запроса.
-Расчет и анализ производительности отдельной БД.
-Расчёт и анализ производительности всей СУБД в целом.
-График зависимости производительности тестового запроса( и самое главное - тестовых запросов ) от нагрузки на СУБД. Или другими словами - можно построить график зависимости бизнес функции от нагрузки .
-Адаптивная оптимизация производительности СУБД методом покоординатного спуска . Настройка конфигурационных параметров для конкретной инфраструктуры и характера нагрузки.

Единственно, что пока не понятно - идея лежала на поверхности . Почему никто этим не занимался ?

Товарищ - нервы собери в узду!
Взялся за дело - не охай.
Есть результат - посылай всех в п$зду .
Нет результата - пох$й.


Зачем это все нужно или о необходимости расчета производительности СУБД.

Первый пост Postgresql, Субд, Производительность

Если, что-то неизмеримо в цифрах, этим нельзя управлять и оптимизировать.

Если вы можете измерить то, о чем говорите, и выразить это в цифрах – значит, вы что-то об этом предмете знаете. Но если вы не можете выразить это количественно, ваши знания крайне ограничены и неудовлетворительны. Может это начальный этап, но это не уровень подлинного научного знания.

У. Томсон (лорд Кельвин) шотландский ученый-физик.

Показать полностью 1
[моё] Postgresql Субд Производительность
16
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии