Двоичные данные в базе и нагрузка на диск

Доброго дня форумчане !
Наблюдаю явление, которое не могу объяснить.

Вариант № 1

Загружаю 600 строк в таблицу, одно из полей хранит двоичные данные. Всего двоичных данных 3.5 Гб
Далее, читаю по очереди в 10 потоков, дисковая система ложится (100% акт. времени) и операция длится часами.

Вариант № 2

Загружаю 600 строк в таблицу, одно из полей хранит ТОЛЬКО путь к файлу. Объем файлов те же 3.5 Гб
Далее, читаю по очереди в 10 потоков, а двоичные данные читаю напрямую с диска, дисковая система живая (10-50% акт. времени) и операция длится несколько минут.

Т.е. между двумя вариантами разница лишь в источнике двоичных данных, в первом из базы, во втором с диска, в остальном алгоритмы одинаковы. Я отлично понимаю в каком месте правильно хранить двоичные данные, понимаю что хранение в СУБД это доп нагрузка, и это не правильно, но, скажите пожалуйста, откуда разница во времени в 100 раз ? Что делает postgres такое, что нагружает дисковую систему намертво ?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Ответ: причина в параметре

Ответ: причина в параметре checkpoint_segments, слушком маленький, так же следует обратить внимание на параметры связанные с ним.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023