2. Различия между Postgres Pro Enterprise и PostgreSQL #
Postgres Pro предоставляет наиболее актуальную версию PostgreSQL c дополнительными изменениями и расширениями. Этот продукт включает все новые возможности, реализованные компанией Postgres Professional, а также сторонние доработки, которые уже приняты сообществом PostgreSQL и попадут в новые версии PostgreSQL. Таким образом, пользователи Postgres Pro Enterprise получают ранний доступ к важным нововведениям и исправлениям.
Postgres Pro Enterprise отличают от PostgreSQL следующие усовершенствования:
От Postgres Pro Standard унаследованы следующие усовершенствования:
- Улучшенный механизм проверки блокировок, не оказывающий отрицательного влияния на производительность.
- Увеличенная скорость и эффективность планирования для различных типов запросов.
- Уменьшенное потребление памяти при обработке сложных запросов со множеством таблиц.
- Добавление времени планирования в информацию, выводимую модулем auto_explain.
Возможность замены нулевого байта заданным ASCII-символом при загрузке данных с помощью команды COPY FROM. (См. описание параметра nul_byte_replacement_on_import.)
Возможность замены символа '\u0000' заданным символом Unicode при вызове функции, обрабатывающей JSONB. (За подробностями обратитесь к описанию параметра unicode_nul_character_replacement_in_jsonb.)
- Реализация механизма PTRACK, позволяющего программе pg_probackup отслеживать изменения страниц при создании инкрементальных резервных копий.
- Поддержка чтения файлов
pg_control предыдущих версий PostgreSQL/Postgres Pro утилитой pgpro_controldata. - Проверка совместимости кластера, позволяющая определить, совместима ли текущая версия Postgres Pro с определённым кластером, и понять, какие параметры влияют на совместимость, не запуская сервер. (См. описание параметра postgres
-Z и описание pgpro_controldata.) - Унифицированная структура пакетов двоичных файлов для всех дистрибутивов Linux, упрощающая миграцию между ними и позволяющая устанавливать продукты на базе PostgreSQL совместно без каких-либо конфликтов. (См. Главу 17.)
- Журнал операций, в котором хранится информация о критически важных системных событиях, таких как обновление, выполнение pg_resetwal и тому подобное. Эта информация важна для осуществления технической поддержки со стороны поставщика. Запись в журнал операций производится только на системном уровне, а для его чтения используются функции SQL. (См. Подраздел 9.27.12.)
- Расширенные политики аутентификации, обеспечивающие эффективное управление паролями и контроль доступа. (См. CREATE PROFILE и ALTER ROLE).
- Встроенные механизмы защиты данных, которые позволяют стерилизовать объекты, перед удалением заполняя их нулями. Обнуление объектов может производиться перед удалением файлов на диске и перед удалением устаревших версий строк (очисткой страниц), освобождением ОЗУ и удалением или перезаписью файлов WAL. (Только сертифицированная редакция.)
- Статистика очистки таблиц, индексов и баз данных в системных представлениях.
- Предопределённые роли, позволяющие создавать табличные пространства и управлять профилями без прав суперпользователя.
- Сбор информации о сбоях сервера, который включается параметром конфигурации crash_info и находится под управлением нескольких параметров, включая этот.
- Оптимизированное потребление памяти при оценке избирательности для каждого элемента массива.
- Механизм параллельного выполнения запросов для запросов, использующих хотя бы одну временную таблицу. Эта функциональность полезна для 1C. (См. описание параметра enable_parallel_temptables.)
- Оценка приблизительной стоимости сброса страниц временных таблиц на диск. Эта функциональность полезна для 1C. (См. описание параметра write_page_cost.)
- Возможность преобразования подзапросов
ANY в соединения LATERAL. (См. описание параметра enable_any_to_lateral_transformation.) - Использование более эффективного примитива синхронизации вместо циклических блокировок для общей очереди сообщений аннулирования. Это позволяет устранить возможную потерю производительности. Может быть полезно для 1C.
- Возможность исследовать повреждённые базы данных с помощью функции
pg_snapshot_any. За подробностями обратитесь к Подраздел 9.27.13. - Улучшенная производительность поиска сегментов для более быстрого вычисления размера таблиц.
- Улучшенная производительность в многоядерных системах за счёт увеличения до 1024 количества секций хеш-таблицы сопоставлений в общем буфере.
- Ускоренная обработка журнала предзаписи (WAL) и TOAST и снижение использования дискового пространства за счёт замены значений по умолчанию параметров default_toast_compression и wal_compression на
lz4. - Подключаемый механизм TOAST, позволяющий разрабатывать и подключать пользовательские реализации TOAST для столбцов таблиц и типов данных в дополнение к реализации по умолчанию. (За подробностями обратитесь к Подраздел 74.2.3.)
- Автоматическое определение провайдера локалей на основании значения
--lc-collate, если провайдер локали не указан в базе данных. За дополнительной информацией обратитесь к initdb, createdb и CREATE DATABASE.
Postgres Pro Enterprise также включает следующие дополнительные модули и приложения:
- Расширение apache_age, добавляющее в Postgres Pro функциональность для работы с графовыми базами данных.
- Расширение aqo для адаптивной оптимизации запросов.
- Модуль auto_dump для сбора данных по длительным и проблемным запросам и последующего воспроизведения этих запросов с целью устранения неполадок.
- Расширение biha, управляемое с помощью утилиты bihactl и превращающее Postgres Pro в кластер с физической репликацией и встроенным механизмом аварийного переключения узлов, отказоустойчивостью и восстановлением после сбоя узла.
- Расширение daterange_inclusive, позволяющее добавлять в вывод верхнюю границу временного диапазона.
- Расширение dbms_lob, позволяющее получать доступ к определённым частям больших объектов или большим объектам целиком и управлять ими.
- Модуль dump_stat, позволяющий сохранять статистику данных при резервном копировании и восстановлении.
- Модуль fasttrun, который предоставляет транзакционно-небезопасную функцию для усечения временных таблиц, что предотвращает разрастание каталога
pg_class. - Модуль fulleq, предоставляющий дополнительный оператор равенства для совместимости с Microsoft SQL Server.
- Модуль hunspell-dict, предоставляющий словари для ряда языков.
- Расширение hypopg, обеспечивающее поддержку гипотетических индексов в Postgres Pro.
- Модуль in_memory, позволяющий размещать данные в общей памяти Postgres Pro.
- Модуль jsquery, реализующий специальный язык запросов для эффективного поиска по индексу в структурированных данных JSONB.
- Утилита ldap2pg, позволяющая автоматизировать процесс создания, изменения и удаления ролей и пользователей корпоративного каталога Postgres Pro.
- Служба мониторинга mamonsu, исполненная в виде агента Zabbix.
- Модуль mchar, предоставляющий дополнительный тип данных для совместимости с Microsoft SQL Server.
- Расширение multimaster, превращающее Postgres Pro Enterprise в синхронный кластер без разделения ресурсов, который обеспечивает расширяемость OLTP для читающих транзакций, а также высокую степень доступности с автоматическим восстановлением после сбоев.
- Модуль online_analyze, привносящий набор функций, которые немедленно обновляют статистику в целевых таблицах после операций
INSERT, UPDATE, DELETE или SELECT INTO в них. - pgbadger — инструмент для быстрого анализа журналов Postgres Pro с созданием подробных отчётов и графиков.
- Пул соединений pgbouncer.
- Расширение pg_failover_slots для автоматического создания и синхронизации слотов логической репликации на физических репликах.
- Модуль pg_hint_plan, управляющий планом выполнения запросов со специальными указаниями для планировщика.
- Модуль pg_integrity_check, осуществляющий вычисление и проверку контрольных сумм отслеживаемых файлов. (Только сертифицированная редакция.)
- Модуль pg_pathman, предоставляющий оптимизированный механизм секционирования, функции для управления секциями, а также декларативный синтаксис. Начиная с Postgres Pro 12, использовать pg_pathman не рекомендуется. Применяйте вместо него реализованное в ванильной версии декларативное секционирование, описанное в Разделе 5.11.
- Расширение pg_proaudit, позволяющее отслеживать различные события, связанные с безопасностью.
- Расширение pg_trgm_mchar, обеспечивающее быстрый поиск схожих строк типов
mchar и mvarchar на основе триграмм. Это расширение полезно для 1C. - Расширение pgpro_anonymizer, позволяющее маскировать или заменять конфиденциальные коммерческие данные или информацию, по которой можно установить личность, в БД Postgres Pro.
- Расширение pgpro_application_info, которое предназначено для помощи разработчикам в переносе приложений, использующих пакет
DBMS_APPLICATION_INFO, из Oracle в Postgres Pro. - pg_probackup — менеджер резервного копирования и восстановления.
- Решение pg_probackup3 для резервного копирования и восстановления кластеров баз данных Postgres Pro.
- Расширение pgpro_bfile, предоставляющее составной тип
bfile и реализующее подобную Oracle технику доступа к внешнему файлу. - Модуль pgpro_bindump для управления операциями резервного копирования и восстановления. В модуле реализованы специализированные команды репликации для расширенного протокола репликации и собственный формат архивирования. Модуль не требует подключения по SSH. Он разработан специально для использования вместе с утилитой pg_probackup3.
- Утилита pgpro_controldata, показывающая управляющую информацию кластера БД PostgreSQL/Postgres Pro и параметры совместимости кластера и/или сервера.
- pg_filedump — приложение для отображения отформатированного содержимого управляющего файла, а также файлов кучи и индекса Postgres Pro.
- Расширение pgpro_cpumeter, которое предоставляет доступ к новой системной функции мониторинга использования процессора. Функция
pgpro_cpumeter непрерывно собирает и записывает информацию о ядрах процессора, используемых процессами сервера Postgres Pro. - Утилита pgpro_datactl для управления файлами данных Postgres Pro, которая включает в себя модуль распаковки и анализа файлов CFS.
- Расширение pgpro_multiplan, позволяющее сохранять планы выполнения запросов для последующего использования или фиксировать определённый план выполнения.
- Расширение pgpro_planner, предоставляющее преобразования и оптимизации запросов для создания эффективных планов выполнения запросов и улучшения производительности.
- Расширение pgpro_pwr, позволяющее получать отчёты по нагрузке, полезные для выявления наиболее ресурсоёмких операций в базе данных.
- Расширение pgpro_result_cache, позволяющее сохранять результаты запросов для повторного использования.
- Расширение pgpro_rp, реализующее функцию приоритизации ресурсов и позволяющее выделять больше ресурсов для сеансов с высоким приоритетом.
- Модуль pgpro_scheduler, в котором реализованы фоновые исполнители для планируемых задач.
- Утилита pgpro_scout для обнаружения чувствительной (конфиденциальной) информации в базе данных. Задача утилиты провести разведку данных на предмет наличия такой информации и привести примеры.
- Модуль pgpro_sfile, предоставляющий функциональность, схожую c LOB в Oracle, и позволяющий хранить объекты с большим объёмом данных, называемые объектами
sfile. Максимальное количество таких объектов, а также размер объекта в байтах ограничены 2^63 - 1. - Расширение pgpro_stats, которое собирает статистику выполнения SQL-операторов, подсчитывает статистику событий ожидания и предоставляет прочие полезные метрики, которые в PostgreSQL нельзя получить никак иначе. Оно также обеспечивает возможность трассировки сеансов приложений и может создавать представления, эмулирующие другие расширения для сбора статистики.
- Утилита pgpro_tune для автоматической настройки параметров конфигурации Postgres Pro. Она предоставляет набор встроенных пресетов, включая пресет для настройки, специфичной для 1С.
- Модуль pg_query_state, дающий возможность узнавать текущее состояние выполнения запросов в обслуживающем процессе.
- Утилита pg_repack для реорганизации таблиц.
- Модуль pg_transfer, осуществляющий поддержку перемещаемых таблиц.
- Модуль pg_tsparser — альтернативный анализатор текстового поиска.
- Модуль pg_variables, предоставляющий функции для работы с переменными различных типов. Для облегчения миграции кода Oracle, обрабатывающего коллекции, доступны следующие виды функций: функции, позволяющие работать с общими переменными-коллекциями, к элементам которых можно получить доступ по ключу, имеющему целочисленный или текстовый тип; функции, обеспечивающие функциональность итератора для любых коллекций.
- Расширение pgvector, предоставляющее поиск сходства векторов в Postgres Pro.
- Расширение pg_wait_sampling, предназначенное для периодического сбора статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания во всех обычных и фоновых рабочих процессах.
- Модуль plantuner, добавляющий поддержку указаний для планировщика, подключающих или отключающих определённые индексы при выполнении запроса.
- Модуль pljava, позволяющий использовать хранимые процедуры, триггеры и функции, написанные на языке Java, в Postgres Pro.
- Расширение plpgsql_check, предоставляющее возможность статического анализа кода для PL/pgSQL в Postgres Pro.
- Модуль rum, предоставляющий индекс RUM на базе GIN.
- Модуль shared_ispell, позволяющий разместить словари в общей памяти.
- Экспериментальное расширение sr_plan, позволяющее пользователям сохранять отдельные планы параметризованных запросов для использования в будущем вне зависимости от изменения параметров планировщика. Это расширение признано устаревшим, используйте вместо него расширение pgpro_multiplan.
- Расширение utl_http, позволяющее получать доступ к данным в Интернете по протоколу HTTP, выполняя HTTP-вызовы из SQL и PL/pgSQL.
- Расширение utl_mail, предназначенное для управления электронной почтой и включающее часто используемые возможности электронной почты, такие как вложение, копия и скрытая копия.
- Расширение utl_smtp, предназначенное для отправки электронной почты по протоколу SMTP из PL/pgSQL.
Postgres Pro предоставляет расширенные возможности и функциональность, поэтому предъявляет более строгие требования, ограничивающие множество поддерживаемых операционных систем.
Важно
Postgres Pro Enterprise работает на всех основных операционных системах Linux. Любые упоминания Windows или другой операционной системы, отличной от Linux, в этой документации неприменимы к Postgres Pro.
Выпуски Postgres Pro Enterprise следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще. Схема версионирования Postgres Pro Enterprise основана на схеме версионирования PostgreSQL и включает дополнительную цифру.