Комментарии 17
Можно ли смоделировать хаос пуассоновских потоков бронирований и конечный автомат состояний рейса (от «по расписанию» до «приземлился») целиком внутри PostgreSQL?
Спасибо ! У меня все руки не доходили до пуассоновского распределения.
Вот на этой демо базе и будет развиваться методика статистического анализа производительности СУБД .
Вместо старых статичных таблиц мы построили генератор, имитирующий жизнь глобальной авиакомпании.
Если я правильно понимаю идею - готовый стендовый тест нагрузочного тестирования ?
То, что нужно !
Спасибо еще раз.
Если я правильно понимаю идею - готовый стендовый тест нагрузочного тестирования ?
Интересно было бы попробовать генератор в таком качестве. Не уверен, насколько создаваемая им нагрузка показательна, но она всяко разнообразнее pgbench-а. Журналирование только надо вернуть, оно убрано для скорости.
но она всяко разнообразнее pgbench-а
В том то и дело. pgbench в качестве бенчмарка откровенно говоря не очень. Только для начального уровня что бы протестировать инструментарий и создавать тестовую нагрузку.
Ок. Тема в работе. Посмотрим, что получится.
Вопрос по генератору (GitHub - postgrespro/demodb: Demonstration Database )
Возможно ли использовать генератор как инструмент создания нагрузки на тестовую БД в ходе нагрузочного тестирования:
CALL generate( now(), now() + interval '10 minute', N );Где N - увеличивается для каждой итерации .
Например каждые 10 минут , по cron .
Также просьба уточнить
Если все в порядке, полученную демобазу можно выгрузить в виде SQL-скрипта.
Разве генератор не записывает данные в базу demо сразу ?
Можно, только чуть иначе. После первой генерации надо вызывать continue() и увеличивать конечную дату на 10 минут.
По второму вопросу - да, пишет в demo, но если базу нужно выгрузить (чтобы потом куда-нибудь загрузить), то нужно экспортировать.
Спасибо за информацию. Принято в работу.
Только для имитации продуктивной нагрузки надо будет добавить постоянную нагрузку на чтение - аналог запросов на просмотр расписаний. Конечно же тоже по распределению Пуассона.
Спасибо за информацию и уточнения по генератору.
С меня, недели через 3-4, статья об использовании генератора в качестве инструмента нагрузки для тестового стенда нагрузочного тестирования и анализа производительности СУБД PostgreSQL. Тема в работе.
Спасибо вам за вашу работу. В свое время очень пригодилась и помогла ваша база.
Надо думать, примеры в новой книге "PostgreSQL 18 изнутри" будут на основе этой базы? Кстати, спасибо за 17-ю, купил в бумажном виде для перечитывания на пляже: на редкость талантливый технический текст. И следующую непременно куплю.
Использую в своей программе обучения ваши материалы. Хотел поблагодарить - отличная работа!
Но страничку с тестовыми базами данных можно было бы улучшить. Вместо маленькой ссылки внизу страницы о том, что вариантов баз несколько, лучше сделать яркую ремарку вверху.
Иначе следующий текст из книги вводит в заблуждение (вернее, неполон):
Как развернуть в вашем кластере PostgreSQL учебную базу данных... На сайте компании есть раздел, посвященный этой базе данных, найти его можно по ссылке https://postgrespro.ru/education/demodb.
Студенты открывают и, конечно же, качают последнюю (верхнюю, неправильную) версию. Никто не доскроливает до маленькой ссылки внизу. Ругаются 😉
А если вдруг кто-то ссылку и замечает, то все равно думает, что сделал что-то не так. Ведь вторая версия базы имеет настройку search_path, а соответствующая книга начинает давать примеры на запуск без его объяснения. Примеры не работают.
Думаю эту ситуацию можно было бы улучшить.
В любом случае огромное спасибо!
Добрый вечер @erogov, можно пару вопросов по генератору - что произойдёт , если вызвать continue в нескольких параллельных соединениях с одной и той же датой/временем ?
1) сформируются дополнительные бронирования рейсов и изменения состояния рейсов
2) ничего не произойдёт
Ну , т.е. можно ли имитировать собственно сам процесс бронирования и изменения состояния вылетов, после генерации тестовой БД ?
Updated : посмотрим, что получится.
Нет, параллельно continue() вызывать нельзя, и не очень понятно зачем: если нужно продолжить генерацию с того момента, где она остановилась, надо просто вызвать continue() один раз.
Да, спасибо за подтверждение. Исправил скрипт для бронирования. Посмотрим, какие результаты будут для более менее приличной тестовой БД ( размером ~10GB) . Наверняка есть резервы по оптимизации и по схеме БД и тем более по конфигурации, да и просто интересно. Все таки демобаза хоть как то похожа на продуктив, в отличии от тестовой БД pgbench. Тема - в работе.
@erogov , коллеги PostgreSQL DBA
Пример использования Демобазы 2.0 для эксперимента по нагрузочному тестированию:
Информация
- Дата регистрации
- Дата основания
- Численность
- 501–1 000 человек
- Местоположение
- Россия
- Представитель
- Иван Панченко
Демобаза 2.0 для PostgreSQL