После десяти месяцев разработки представлена новая стабильная ветка СУБД PostgreSQL 9.6. Обновления для ветки 9.6 будут выходить в течение пяти лет до сентября 2021 года.

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

  • Поддержка распараллеливания операций последовательного сканирования записей (Sequential Scan), слияния запросов (join) и агрегирования данных. При распараллеливании операция разбивается на части и каждая часть разбирается отдельным обработчиком, после чего результаты работы каждого обработчика объединяются, что позволяет существенно увеличить скорость обработки запроса на системах с большим числом процессорных ядер. Выигрыш особенно заметен для ресурсоёмких запросов, таких как сопоставление по регулярным выражениям. Например, в текстах при включении распараллеливания некоторые запросы выполняются до 32 раз быстрее.
  • Новый режим синхронной репликации "synchronous_commit = remote_apply", при котором основной узел перед закрытием транзакции ожидает подтверждения применения данных на standby-узле, что позволяет обеспечить непротиворечивость операций чтения из БД в любой части кластера;
  • Возможность создания кластерных конфигураций, включающих несколько запасных узлов, реплицируемых в синхронном режиме. Данная возможность может применяться для создания нескольких полностью идентичных узлов для балансировки нагрузки;
  • В модуль postgres_fdw, позволяющий логически объединить содержимое БД с нескольких серверов, добавлена поддержка операций слияния (join) и сортировки запросов, а также выполнения операций UPDATE и DELETE на внешнем сервере. В том числе модуль может применяться для первичной обработки запросов в PostgreSQL с трансляцией запросов на внешние БД, которые могут обслуживаться другими СУБД;
  • Новый API для создания горячих бэкапов, в котором метка резервной копии не записывается в директорию с данными, а возвращается как результат выполнения функции pg_stop_backup(), что позволяет защититься от проблем в случае краха во время бэкапа;
  • Снижено негативное влияние на работу больших таблиц операции "autovacuum", благодаря исключению операций повторной заморозки ("refreezing") старых данных;
  • Реализована подсистема для отображения прогресса выполнения операций, например, организовано информирование о времени до завершения VACUUM;
  • В систему полнотекстового поиска добавлены средства поиска фраз, реализованные через новый оператор ‹-› или ‹DISTANCE›, определяющий расстояние между словами (например, можно осуществить выборку фраз, в которых слово "А" отделено от "B" заданным числом слов). Совместно с новыми опциями гибкой настройки поиска, новая возможность может применяться для создания гибридных систем поиска, объединяющих поиск по реляционным данным, JSON и полнотекстовым индексам;
  • Новые системные представления и функции: pg_stat_wal_receiver, pg_visibility, pg_config, pg_blocking_pids, g_notification_queue_usage;
  • При установке дополнений теперь поддерживается каскадная установка зависимостей;
  • В модуле pg_basebackup появилась поддержка распараллеливания операций и слотов репликации;
  • В утилиту psql добавлены команды \ev и \sv для редактирования представлений. Реализована возможность указания нескольких экземпляров опций "-c" и "-f". Добавлен режим \crosstabview для отображения результатов запроса в виде сетки, по аналогии с электронными таблицами;
  • Добавлен отладочный модуль pg_visibility, предоставляющий средства для изучения карты видимости (Visibility Map, отслеживает какие элементы видны для всех активных транзакций);
  • Поддержка выражения "ALTER TABLE ADD COLUMN ... IF NOT EXISTS" для добавления столбца только при его отсутствии в таблице;
  • Возможность создавать GIN-индексы с любым значением maintenance_work_mem;
  • Новое системное представление pg_config, отражающее параметры сборки СУБД;



Источник: http://www.opennet.ru/opennews/art.shtml?num=45242