2. Различия между Postgres Pro Enterprise и PostgreSQL
Postgres Pro предоставляет наиболее актуальную версию PostgreSQL c дополнительными изменениями и расширениями. Этот продукт включает все новые возможности, реализованные компанией Postgres Professional, а также сторонние доработки, которые уже приняты сообществом PostgreSQL и попадут в новые версии PostgreSQL. Таким образом, пользователи Postgres Pro Enterprise получают ранний доступ к важным нововведениям и исправлениям.
Примечание
Postgres Pro Enterprise предоставляется по следующей лицензии: https://postgrespro.ru/products/postgrespro/eula. Обязательно ознакомьтесь с условиями лицензии, прежде чем загружать и использовать Postgres Pro Enterprise.
Postgres Pro Enterprise отличают от PostgreSQL следующие усовершенствования:
- 64-битные идентификаторы транзакций, исключающие проблемы зацикливания. (См. Подраздел 24.1.5.)
- Сжатие на уровне страниц. (См. Главу 31.)
- Поддержка автономных транзакций. (См. Главу 16.)
- Алгоритм поиска k ближайших соседей (k-NN) для SP-GiST, GiST и B-дерева. (См. Раздел 11.13.)
- Уменьшение объёма записей в WAL, генерируемых при операциях
CREATE INDEX
с индексами GiST, GIN и SP-GiST. - «Отложенное» размещение временных таблиц на диске. Дисковое пространство для временных таблиц выделяется только при переполнении буферов (размером
temp_buffers
) и только тогда таблица сохраняется на диске. Так как дисковое пространство для временных таблиц теперь не выделяется сразу, это позволяет значительно сократить нагрузку на диск при работе с ограниченным количеством небольших временных таблиц. - Справедливое распределение лёгких исключительных блокировок после получения заданного количества разделяемых блокировок. (См. описание параметра lwlock_shared_limit.)
- Усовершенствование выбора между последовательным сканированием и сканированием по индексу. (См. описание параметра seq_scan_startup_cost_first_row.)
- Улучшение в libpq обработки подключений с несколькими серверами и перехода от одного к другому. (См. описание параметров hostorder и failover_timeout.)
- Реализация тайм-аута для простаивающих сеансов на стороне сервера. (См. описание параметра idle_session_timeout.)
- Поддержка вывода времени в pg_xlogdump.
- Периодическая проверка соединения клиента с сервером во время выполнения запросов, что позволяет обнаруживать разрывы соединений раньше и освобождать ресурсы сервера при отключении клиентов. (См. описание параметра client_connection_check_interval.)
- Улучшенная вариация pgbench, которая учитывает ошибки сериализации и взаимоблокировки в транзакциях, а также поддерживает составные команды.
- Исправление повреждённых данных WAL из буферов в оперативной памяти.
- Покрывающие индексы. (См. раздел, посвящённый
INCLUDE
, в описании CREATE INDEX.) - Улучшенный механизм проверки блокировок, не оказывающий отрицательного влияния на производительность.
- Добавление времени планирования в информацию, выводимую модулем auto_explain.
- Использование ICU на всех платформах с целью обеспечить платформонезависимую сортировку для различных локалей. Провайдер правил сортировки
icu
задействуется для всех локалей, за исключениемC
иPOSIX
. - Реализация механизма PTRACK, позволяющего программе pg_probackup отслеживать изменения страниц при создании инкрементальных резервных копий.
- Согласованное чтение на ведомых серверах. (См. WAITLSN.)
- Улучшения редактирования в командной строке с использованием WinEditLine в версии psql для Windows, в том числе поддержка автодополнение в консоли psql и изменение кодировки psql по умолчанию на UTF-8.
- Алгоритм SHA-2 для шифрования паролей (см. Подраздел 20.3.2)
Postgres Pro Enterprise также включает следующие дополнительные модули:
- Расширение aqo для адаптивной оптимизации запросов.
- Модуль dump_stat, позволяющий сохранять статистику данных при резервном копировании и восстановлении.
- Модуль fasttrun, который предоставляет транзакционно-небезопасную функцию для усечения временных таблиц, что предотвращает разрастание каталога
pg_class
. - Модуль fulleq, предоставляющий дополнительный оператор равенства для совместимости с Microsoft SQL Server.
- Модуль hunspell-dict, предоставляющий словари для ряда языков.
- Модуль jsquery реализует специальный язык запросов для эффективного, с использованием индексов, поиска в структурированных данных JSONB
- Служба мониторинга mamonsu, исполненная в виде агента Zabbix.
- Модуль mchar, предоставляющий дополнительный тип данных для совместимости с Microsoft SQL Server.
- Расширение multimaster, превращающее Postgres Pro Enterprise в синхронный кластер без разделения ресурсов, который обеспечивает расширяемость OLTP для читающих транзакций, а также высокую степень доступности с автоматическим восстановлением после сбоев.
- Модуль online_analyze, привносящий набор функций, которые немедленно обновляют статистику в целевых таблицах после операций
INSERT
,UPDATE
,DELETE
илиSELECT INTO
в них. - Пул соединений pgbouncer.
- Модуль pg_hint_plan, управляющий планом выполнения запросов со специальными указаниями для планировщика.
- Модуль pg_pathman, реализующий оптимизированный механизм секционирования и функции для управления секциями, а также декларативный синтаксис.
- pg_probackup — менеджер резервного копирования и восстановления.
- Модуль pgpro_scheduler, в котором реализованы фоновые исполнители для планируемых задач.
- Утилита pgpro_controldata, показывающая управляющую информацию кластера БД PostgreSQL/Postgres Pro и параметры совместимости кластера и/или сервера.
- Модуль pg_query_state, дающий возможность узнавать текущее состояние выполнения запросов в обслуживающем процессе.
- Утилита pg_repack для реорганизации таблиц.
- Модуль pg_transfer, осуществляющий поддержку перемещаемых таблиц.
- Модуль pg_tsparser — альтернативный анализатор текстового поиска.
- Модуль pg_variables, предоставляющий функции для работы с переменными различных типов.
- Расширение pg_wait_sampling, предназначенное для периодического сбора статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания во всех обычных и фоновых рабочих процессах.
- Модуль plantuner, добавляющий поддержку указаний для планировщика, подключающих или отключающих определённые индексы при выполнении запроса.
- Модуль rum, предоставляющий индекс RUM на базе GIN.
- Модуль shared_ispell, позволяющий разместить словари в общей памяти.
- Модуль sr_plan, позволяющий сохранять и восстанавливать планы запросов.
Выпуски Postgres Pro Enterprise следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще. Схема версионирования Postgres Pro Enterprise основана на схеме версионирования PostgreSQL и включает дополнительную цифру.