PostgreSQL 18 released!

Поздравляю всех с релизом 18 версии 15.09.2025!

Основная презентация релиза.

Основные изменения и дополнения в PostgreSQL 18.

Что важного из того, что нам подвезли:

  • добавлена подсистема асинхронного ввода/вывода, позволяющая увеличить пропускную способность ввода/вывода и избавиться от задержек. В Linux добавили интерфейс асинхронного ввода/вывода io_uring (io_method=io_uring), поддерживаемый начиная с ядра Linux 5.1. Теперь и Постгрес может задействовать асинхронный ввод/вывод на новых условиях, пока только для ускорения выполнения некоторых операций, связанных с чтением данных из файловой системы, таких как последовательный перебор, сканирование битовой карты индексов и проведение чистки (vacuum). В некоторых тестах применение AIO приводит к увеличению производительности в 2–3 раза.
    • а на стандартных тестах разницы и нет) Поживём, посмотрим
  • добавлены оптимизации, более эффективно использующие индексы для запросов, содержащих конструкции «OR» и «IN (…)» в блоке «WHERE», а также повышающие производительность планирования и выполнения объединения таблиц (например, ускорен код слияние хэшей и разрешено использовать инкрементальную сортировку при слиянии таблиц);
    • как говорится — поживём увидим в бизнесовых реалиях
  • добавлена поддержка виртуальных генерируемых столбцов (омг), значение которых вычисляется на лету в процессе выполнения запросов, без сохранения на диск — «GENERATED VIRTUAL)
    • что нам скажет производительность и опять же замена ручных функций выполняющих аналогичный функционал — думаю при тесте окажется то же самое
  • в командах INSERT, UPDATE, DELETE и MERGE реализована возможность вывода прошлых (OLD) и текущих (CURRENT) значений в выражении RETURNING. Например, «UPDATE… RETURNING WITH (OLD AS o, NEW AS n) o.*, n.*.»;
    • уже интересно — но зачем, Холмс?
  • добавлена функция uuidv7() для генерации случайных уникальных идентификаторов в формате UUIDv7. В отличие от старой функции для генерации UUID (gen_random_uuid), которая теперь дополнительно доступна под именем uuidv4(), в UUIDv7 помимо случайного значения включается время генерации. Наличие упорядоченных частей в значении UUID (первые 12 символов — эпохальное время, а последующие 18 — случайное значение) повышает эффективность сортировки и индексирования, что актуально так как UUID обычно используются для первичных ключей (например, ключи, созданные в близкое время размещаются рядом друг с другом в индексе);
    • ну и наконец — то, что ждали 3-4 года !!!
  • в новых установках включено по умолчанию использование контрольных сумм для проверки целостности хранимых данных. Для отмены данного поведения при запуске initdb следует указать опцию ‑no‑data‑checksums;
    • ожидаемо
  • Остальное +- тюнинг имхо

Опубликовано

в

Метки:

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

двенадцать + десять =