Релиз СУБД PostgreSQL 9.6
После десяти месяцев разработки представлена новая стабильная ветка СУБД 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, отражающее параметры сборки СУБД;
© OpenNet