PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Рейтинг: 43.6% · 6 голосов
SQL и NoSQL: PostgreSQL, MySQL, Redis, MongoDB, ClickHouse, ElasticSearch — проектирование схем, индексы, репликация и оптимизация запросов.
Ответить
Аватара пользователя
Kutz
Сообщения: 71
Зарегистрирован: 16 май 2026, 02:21

PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Сообщение Kutz »

Обновили основной кластер с 16.6 до 18.3 (Patroni, три ноды, NVMe). Главное, ради чего шли — асинхронный ввод-вывод. Потестил три режима на аналитической реплике, тяжёлый отчёт с seq scan по таблице на 400 ГБ, кеш холодный:

io_method = sync (по-старому) — 211 секунд
io_method = worker (дефолт, io_workers = 3) — 96 секунд
io_method = io_uring — 79 секунд

То есть на чтениях с диска ускорение больше чем вдвое. На OLTP-нагрузке разницы почти нет, что ожидаемо — там всё из shared_buffers. io_workers поднял до 8 по числу ядер реплики, стало ещё чуть лучше дефолта.

Кто ещё гонял 18-ку под реальной нагрузкой? Интересуют грабли, особенно с io_uring.
👍1 ❤️1 🔥 😄1 🤔
✔ Лучший ответ сформирован автоматически — icu2
Гоняем с февраля, грабли есть. 1. io_uring в контейнерах: дефолтный seccomp-профиль Docker и большинства k8s-дистрибутивов режет syscall'ы io_uring. Симптом — постгрес не стартует с ошибкой could not setup io_uring queue. Либо кастомный seccomp-профиль, либо оставайтесь на worker — в контейнерах он и так даёт большую часть профита. 2. AIO в 18-ке покрывает только чтения: seq scan, bitmap heap sca…
Перейти к ответу →
Аватара пользователя
icu2
Сообщения: 65
Зарегистрирован: 14 май 2026, 06:04

Re: PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Сообщение icu2 »

✔ Лучший ответ — сформирован автоматически
Гоняем с февраля, грабли есть.

1. io_uring в контейнерах: дефолтный seccomp-профиль Docker и большинства k8s-дистрибутивов режет syscall'ы io_uring. Симптом — постгрес не стартует с ошибкой could not setup io_uring queue. Либо кастомный seccomp-профиль, либо оставайтесь на worker — в контейнерах он и так даёт большую часть профита.
2. AIO в 18-ке покрывает только чтения: seq scan, bitmap heap scan, vacuum. Обычные index scan пока мимо, обещают в 19-й. Если у вас чистый OLTP по индексам — чуда не ждите, вы его и не увидите.
3. Старые ядра: на RHEL 8 и клонах с 4.18 io_uring либо нет, либо он дырявый. Astra 1.8 с ядром 6.6 — ок, Альт p11 — ок.
4. После pg_upgrade в 18-ке наконец переносится статистика планировщика, но расширенную (CREATE STATISTICS) всё равно пересчитывайте руками.
👍1 ❤️ 🔥 😄 🤔1
Аватара пользователя
tx3300
Сообщения: 29
Зарегистрирован: 13 май 2026, 07:30

Re: PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Сообщение tx3300 »

Мы пока на стейдже, но скажу, что 18-ку стоит брать даже без io_uring. uuidv7() из коробки — выкинули расширение, которым генерили сортируемые uuid, и индексы перестали пухнуть от случайных вставок. Плюс skip scan: составной индекс (client_id, created_at) теперь отрабатывает для запросов без client_id в условии — пара дашбордов ускорилась на порядок без единого нового индекса. В плане это выглядит как обычный Index Scan, смотрите на Buffers: чтений становится в разы меньше.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
wasmsre
Сообщения: 13
Зарегистрирован: 11 май 2026, 03:17

Re: PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Сообщение wasmsre »

@Kutz, А у тех, кто на Postgres Pro по требованиям заказчика, как с этим? У нас госконтракт, реестровый софт обязателен. В Enterprise-редакции своя реализация асинхронного чтения была и раньше, но интересно, когда они переедут на ванильную 18-ю базу — у них в релизных циклах это обычно плюс полгода-год к мажору.
👍1 ❤️ 🔥1 😄 🤔1
Аватара пользователя
fosl0002
Сообщения: 15
Зарегистрирован: 21 май 2026, 01:32

Re: PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Сообщение fosl0002 »

Коллеге выше: PPEE исторически отстаёт примерно на мажор, так и закладывайте. По теме: подтверждаю цифры ТС, у нас на отчётах в стиле «это должно жить в ClickHouse, но живёт тут» (не начинайте) worker дал х1.9, io_uring сверху ещё процентов 15. И не забудьте, что effective_io_concurrency в 18-ке теперь реально работает для seq scan, а дефолт подняли до 16 — на NVMe смело ставьте 64–128.
👍1 ❤️1 🔥 😄 🤔1
Аватара пользователя
krayzie
Сообщения: 28
Зарегистрирован: 12 май 2026, 14:46

Re: PostgreSQL 18 и io_method=io_uring: у кого какие цифры в проде?

Сообщение krayzie »

Напоминание тем, кто будет переезжать свежим initdb или логической репликацией: в 18-ке контрольные суммы страниц включены по умолчанию. Если старый кластер был без них, pg_upgrade потребует совпадения — либо initdb --no-data-checksums, либо сначала включайте на старом через pg_checksums (даунтайм!). Мы на этом потеряли вечер.
👍1 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Базы данных»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей