Конференция завершена. Ждем вас на HighLoad++ в следующий раз!

Подсистема I/O в PostgreSQL: архитектура, проблемы, обходные пути

Базы данных и системы хранения

PostgreSQL

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Целевая аудитория

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

Тезисы

Несмотря на то, что подсистема ввода-вывода PostgreSQL вполне хорошо подходит для большинства решаемых задач, она все-таки имеет несколько особенностей и проблем:
* трудно предсказать задержку записи/чтения данных, особенно для баз данных, размер которых значительно больше доступной памяти;
* пропускная способность ввода-вывода, особенно в быстрых подсистемах хранения (например, в NVMe-дисках), недостаточно высока для использования на все 100%;
* бэкенды сами выполняют слишком много операций ввода-вывода, так как фоновый писатель (bgwriter) работает не очень оптимально;
* генерируется ненужная случайная запись данных (bgwriter, backends);
* двойная буферизация между страничным кэшем ОС и общими буферами (shared_buffers) памяти Postgres;
* все операции на чтение данных являются синхронными (из страничного кэша ОС);
* большой размер shared_buffers может вызвать проблемы, когда таблицы очень часто удаляются или очищаются.

Об этом и не только я расскажу в своем докладе...

Артем Сергиенко

Postgres Professional

Страшный инженер :)

Postgres Professional

Самый лучший вендор СУБД в РФ %)

Видео