Скрипт для тестирования производительности записи/чтения бинарных файлов в базу данных postgres с использованием pg_largeobject.

Как установить: pip install -r requirements.txt

Как использовать:

./test_pg_lo.py --help - мануал

Запуск теста:

./test_pg_lo.py --dbname='имя БД' --user='пользователь' --host='сервер ДБ' --password='пароль' --port='порт'

Скрипт создает в базе вспомогательную таблицу test_pg_lo,записывает все файлы из папки ./input в таблицу pg_largeobject и добавляет записи (имя файла, размер, скорость записи в базу, скорочть чтения из базы) в таблицу test_pg_lo, предварительно ее создав. Производит чтение из базы lo (large_object) объектов и запись на диск в папку ./output. Выводит метрики процесса. По завершении очищает таблицу pg_largeobject и удаляет вспомогательную таблицу test_pg_lo.

Пример вывода скрипта:

./test_pg_lo.py

Самая медленная запись в базу: файл - ТЦ 71.jpg, размер - 5056 kB, время - 86 ms

Самая быстрая запись в базу: файл - ТЦ 32.jpg, размер - 54 kB, время - 2 ms

Среднее время записи в базу: 7 ms

Самое медленное чтение из базы: файл - ТЦ 71.jpg, размер - 5056 kB, время - 67 ms

Самое быстрое чтение из базы: файл - ТЦ 39.jpg, размер - 72 kB, время - 1 ms

Среднее время чтения из базы: 4 ms

Всего записано в базу: 93796 kB за 2863 ms

Чтение из базы и запись на диск всей папки: 93796 kB за 1961 ms