После десяти месяцев разработки представлена новая стабильная ветка СУБД PostgreSQL 9.6. Выпуск обновлений для ветки 9.6 будет осуществляться в течение пяти лет до сентября 2021 года.
Основные новшества:
- Поддержка распараллеливания операций последовательного сканирования записей (Sequential Scan), слияния запросов (join) и агрегирования данных. При распараллеливании операция разбивается на части и каждая часть разбирается отдельным обработчиком, после чего результаты работы каждого обработчика объединяются, что позволяет существенно увеличить скорость обработки запроса на системах с большим числом процессорных ядер. Выигрыш особенно заметен для ресурсоёмких запросов, таких как сопоставление по регулярным выражениям.
- Возможность создания кластерных конфигураций, включающих несколько запасных узлов, реплицируемых в синхронном режиме.
- Новый режим синхронной репликации «synchronous_commit = remote_apply«, при котором основной узел перед закрытием транзакции ожидает подтверждения применения данных на standby-узле;
- В модуль postgres_fdw, позволяющий логически объединить содержимое БД с нескольких серверов, добавлена поддержка операций слияния (join) и сортировки запросов, а также выполнения операций UPDATE и DELETE на внешнем сервере;
- Новый API для создания горячих бэкапов, в котором метка резервной копии не записывается в директорию с данными, а возвращается как результат выполнения функции pg_stop_backup(), что позволяет защититься от проблем в случае краха во время бэкапа;
- Снижено негативное влияние на работу больших таблиц операции «autovacuum», благодаря исключению операций повторной заморозки («refreezing») старых данных;
- Реализована подсистема для отображения прогресса выполнения операций, например, организовано информирование о времени до завершения VACUUM;
- В систему полнотекстового поиска добавлен новый оператор ‹-› или ‹DISTANCE›, определяющий расстояние между словами (например, можно осуществить выборку фраз, в которых слово «А» отделено от «B» заданным числом слов);
- Добавлен отладочный модуль pg_visibility, предоставляющий средства для изучения карты видимости (Visibility Map, отслеживает какие элементы видны для всех активных транзакций);
- Возможность создавать GIN-индексы с любым значением maintenance_work_mem.