The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз СУБД PostgreSQL 18

25.09.2025 16:20

После года разработки опубликована новая стабильная ветка СУБД PostgreSQL 18. Обновления для новой ветки будут выходить в течение пяти лет до ноября 2030 года. Поддержка PostgreSQL 13.x, самой старой из поддерживаемых веток, будет прекращена 13 ноября.

Основные новшества:

  • Добавлена подсистема асинхронного ввода/вывода, позволяющая увеличить пропускную способность ввода/вывода и избавиться от задержек. Помимо доступной на всех платформах универсальной реализации AIO (io_method=worker), основанной на выполнении нескольких процессов-обработчиков (по умолчанию 3), в Linux может применяться интерфейс асинхронного ввода/вывода io_uring (io_method=io_uring), поддерживаемый начиная с ядра Linux 5.1. Асинхронный ввод/вывод пока задействован только для ускорения выполнения некоторых операций, связанных с чтением данных из файловой системы, таких как последовательный перебор, сканирование битовой карты индексов и проведение чистки (vacuum). В некоторых тестах применение AIO приводит к увеличению производительности в 2-3 раза. Операции записи продолжают выполняться в синхронном режиме для достижения требований ACID.
  • Реализована оптимизация "skip scan" в многостолбцовых индексах, благодаря которой индекс может использоваться не только для проверки первого проиндексированного столбца и полной связки столбцов, но и для обработки по отдельности остальных проиндексированных столбцов. Например, ранее при создании B-tree индекса над столбцами "(status, date)" индекс применялся только для запросов, проверяющих поле "status" или оба поля "status" и "date", а при проверке в запросе только поля "date" выполнялось сканирование содержимого таблицы. Режим "skip scan" позволяет в определённых ситуациях сканировать индекс при запросе только поля "date". Режим применяется только для индексов "B-tree" при использовании в запросе условного оператора "=" над индексированным полем, в ситуациях, когда пропущенное поле имеет небольшое количество различных значений (например, оптимизация сработает, если поле статус "status" имеет несколько фиксированных значений).
  • Добавлены оптимизации, более эффективно использующие индексы для запросов, содержащих конструкции "OR" и "IN (...)" в блоке "WHERE", а также повышающие производительность планирования и выполнения объединения таблиц (например, ускорен код слияние хэшей и разрешено использовать инкрементальную сортировку при слиянии таблиц).
  • Добавлена поддержка распараллеливания построения индексов GIN (Generalized Inverted Index), применяемых для индексации составных значений, таких как массивы, и организации поиска по полнотекстовым данным или структурам JSON.
  • Добавлена возможность создания материализованных представлений и ключей для секционирования таблиц с индексами с признаком "unique", не использующими структуру B-tree.
  • Повышена общая производительность блокировок для запросов, работающих с большим количеством таблиц, а также внесены улучшения в обработку запросов к секционированным таблицам, ускоряющие отсеивание не используемых секций и операции слияния (JOIN).
  • Ускорены операции с текстом, такие как функции приведения в верхний/нижний регистр. Добавлен режим PG_UNICODE_FAST для ускорения учёта свойств локали Unicode-символов.
  • Реализована возможность сохранения статистики планировщика запросов после обновления между значительными релизами PostgreSQL. Изменение позволяет избежать выполнения ресурсоёмкой операции "ANALYZE" после запуска новой версии, до завершения которой наблюдается проседание производительности СУБД.
  • Повышена производительность утилиты pg_upgrade, применяемой для автоматизации перехода на новый значительный выпуск PostgreSQL. Оптимизации особенно заметны при обновлении БД, содержащих большое число объектов, таких как таблицы и последовательности. Для ускорения работы pg_upgrade также добавлен флаг "--jobs N" для распараллеливания проверок в N потоков и флаг "--swap" для замены каталогов с данными целиком без выставления ссылок, без клонирования и без копирования файлов.
  • Добавлена поддержка виртуальных генерируемых столбцов, значение которых вычисляется на лету в процессе выполнения запросов, без сохранения на диск. Если в выражении "CREATE TABLE..." для генерируемых столбцов указано только ключевое слово "GENERATED" без уточнения типа (STORED или VIRTUAL), то новый вариант применяется по умолчанию вместо старой реализации. В старой реализации значения генерировались во время выполнения операций "INSERT" или "UPDATE" и сохранялись на диск для последующего использования. Недостатком виртуальных генерируемых столбцов является невозможность использования их в индексах, а достоинством - возможность выполнять нормализацию и изменение данных на лету (актуально при работе с данными JSON). Что касается классических хранимых генерируемых столбцов, то в новом выпуске для них обеспечена поддержка логической репликации.
  • В командах 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 обычно используются для первичных ключей (например, ключи, созданные в близкое время размещаются рядом друг с другом в индексе).
  • В операции "LIKE" реализована поддержка сопоставлений с текстом, в которых используются недетерминированные свойства локали "collation", позволяющие выполнять сопоставления с учётом смысла символов (например, при сравнении может не принимается во внимание знак ударения). Добавлена функция CASEFOLD для изменения регистра символов c учётом свойств локали "collation" (например, некоторые символы имеют более двух строчных вариантов или при сравнении требуют преобразования в верхний регистр, а не в нижний).
  • Добавлена возможность использования временных ограничений (temporal constraint). В значениях "PRIMARY KEY" и "UNIQUE" для добавления временных ограничений следует использовать выражение "WITHOUT OVERLAPS", а в значении "FOREIGN KEY" - выражение PERIOD. Например, при определении первичных ключей можно ограничить ключи с перекрывающимися интервалами времени.
  • Добавлена команда "CREATE FOREIGN TABLE ... LIKE command" для создания схемы внешней таблицы на основе определения локальной таблицы.
  • Добавлена поддержка подключения к СУБД, используя аутентификацию на базе OAUTH 2.0 с применением токена доступа вместо пароля. Применение OAUTH позволяет не хранить пароли в БД, а идентифицировать пользователей через внешние сервисы, а также использовать такие возможности как двухфакторная аутентификация и единая точка входа (SSO).
  • Добавлена функция ssl_tls13_ciphers(), через которую можно определить список алгоритмов шифрования, допустимых при подключении с использованием протокола TLSv1.3.
  • В разряд устаревших и запланированных к удалению переведена поддержка аутентификации с использованием алгоритма md5 для хэширования паролей. Вместо md5 рекомендуется применять алгоритм SCRAM (SCRAM-SHA-256), появившийся в PostgreSQL 10. Дополнительно отмечается реализация поддержки проброса аутентификации на базе SCRAM при подключении через postgres_fdw и dblink к внешним серверам PostgreSQL.
  • При выполнении операции "EXPLAIN ANALYZE" обеспечен вывод сведений о числе операций поиска в индексах при сканировании индекса и числе обращений к буферам при выполнении запроса. В вывод "EXPLAIN ANALYZE VERBOSE" включена статистика о CPU, WAL-журнале и интенсивности операций чтения. В таблицу pg_stat_all_tables добавлены сведения о времени, потраченном на операцию VACUUM и анализ таблиц. Предоставлена статистика об интенсивности ввода/вывода и нагрузке на WAL-журнал в разрезе отдельных соединений. В pg_stat_subscription_stats и логах добавлена информация с диагностикой конфликтов при выполнении операций записи во время логической репликации.
  • В новых установках включено по умолчанию использование контрольных сумм для проверки целостности хранимых данных. Для отмены данного поведения при запуске initdb следует указать опцию "--no-data-checksums".
  • В утилиту pg_createsubscriber добавлен флаг "--all" для создания логических реплик одной командой сразу для всех БД.
  • Реализована новая версия (3.2) протокола, применяемого для взаимодействия внешних утилит с СУБД и реализованного в библиотеке libpq. Прошлое обновление протокола было произведено в PostgreSQL 7.4 (2003 год). В библиотеке libpq по умолчанию продолжает использоваться версия 3.0.


  1. Главная ссылка к новости (https://www.postgresql.org/abo...)
  2. OpenNews: Релиз СУБД PostgreSQL 17
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63877-postgresql
Ключевые слова: postgresql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (17) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 16:35, 25/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вообще круто, из университетского проекта так раскрутиться:
    https://en.wikipedia.org/wiki/PostgreSQL
     
  • 1.2, Аноним (2), 16:37, 25/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >io_uring (io_method=io_uring), поддерживаемый начиная с ядра Linux 5.1

    Только он там разваливался, и починили это только к 5.4

     
     
  • 2.7, Аноним (7), 17:10, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю, ещё лет 10 стоит подождать, прежде чем использовать io_uring. Но то, что сабж подтянули до уровня конкурентов, не может не радовать, конечно. Ещё бы он так не распухал.
     

  • 1.4, Сербский (?), 16:55, 25/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    PostgreSQL - бд как швецарский нож, шикрано подходит для большинства современных задач.
    Мало современных software продуктов которые с каждым релизом становяться только лучше. Второй такой пожалуй только Java, кстати 25я вышла тоже в этом месяце, что вдвойне приятней.
     
     
  • 2.5, Аноним (7), 17:00, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, не больше, чем sqlite, на самом деле. А, всё, увидел про java.
     
  • 2.6, Аноним (1), 17:05, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://opennet.ru/62511-database
     
  • 2.16, Аноним (16), 17:59, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Java стоит на месте
     

  • 1.8, Аноним (8), 17:13, 25/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Релиз СУБД PostgreSQL 18

    Вот бы ещё 1С, в порядке заботы о национальной безопасности, добавила бы бескостыльную поддержку постгреса на уровне вражеских БД.

     
     
  • 2.9, Аноним (1), 17:18, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >поддержку постгреса

    https://www.opennet.dev/opennews/art.shtml?num=59517

     
     
  • 3.13, Кошкажена (?), 17:44, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Пфф. Посгрес про как бы реестре.
     
     
  • 4.14, User (??), 17:45, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Какой из? Их там много)
     
  • 4.17, Аноним (1), 18:02, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да вы что...
     
  • 2.10, Голдер и Рита (?), 17:35, 25/09/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.11, Аноним (8), 17:40, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Хочешь дружбы — будь другом. (с)

    С некоторыми, дружить слишком дорого.

     
  • 2.12, Кошкажена (?), 17:43, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Первые 2 ссылки в поиске вроде говорят о том, что все есть?

    https://1c.postgres.ru/
    https://postgrespro.com/docs/postgrespro/16/config-one-c

     
     
  • 3.15, User (??), 17:47, 25/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Э. Там вроде кривые самопильные патчи, скомпонованные в отдельный "дистрибутив". В мейнлайне их нема
     

  • 1.18, Аноним (18), 18:15, 25/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чего не хватает Постгресу, чтобы победить оракл? Ну кроме тех поддержки, конечно.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру