Первые тесты внушают оптимизм, но главное впереди.
В PostgreSQL появился долгожданный механизм асинхронного ввода-вывода — IO_uring. Пока это базовая реализация, но уже сам факт её включения в основную ветку проекта 26 марта стал важным шагом к заметному росту производительности, особенно на Linux-серверах.
IO_uring — это современный интерфейс асинхронного I/O, разработанный специально для Linux. Он позволяет существенно сократить издержки на переключение контекста и обойти ограничения, связанные с числом потоков ввода-вывода. В PostgreSQL он становится альтернативой существующему методу io_method=worker, который уступает IO_uring при большом количестве мелких операций.
Чтобы включить новую возможность, PostgreSQL нужно собрать с поддержкой библиотеки liburing (опция --with-liburing), а затем в настройках сервера указать io_method=io_uring. Эта функция доступна только для Linux и требует дополнительной зависимости на этапе компиляции.
Сами разработчики подчёркивают, что реализация пока очень простая и в будущем здесь возможны серьёзные оптимизации. Тем не менее, первые тесты уже показывают убедительные улучшения в скорости, особенно в сценариях с высокой нагрузкой.
Полноценная поддержка IO_uring, вероятно, станет частью PostgreSQL 18, релиз которого ожидается в сентябре. До этого момента разработчики будут продолжать работу над улучшением интеграции нового I/O-механизма, чтобы он по-настоящему оправдал свой потенциал.