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.28.12.)
- Расширенные политики аутентификации, обеспечивающие эффективное управление паролями и контроль доступа. (См. CREATE PROFILE и ALTER ROLE).
- Встроенные механизмы защиты данных, которые позволяют стерилизовать объекты, перед удалением заполняя их нулями. Обнуление объектов может производиться перед удалением файлов на диске и перед удалением устаревших версий строк (очисткой страниц), освобождением ОЗУ и удалением или перезаписью файлов WAL. (Только сертифицированная редакция.)
- Статистика очистки таблиц, индексов и баз данных в системных представлениях.
- Предопределённые роли, позволяющие создавать табличные пространства и управлять профилями без прав суперпользователя.
- Сбор информации о сбоях сервера, который включается параметром конфигурации crash_info и находится под управлением нескольких параметров, включая этот.
- Оптимизированное потребление памяти при оценке избирательности для каждого элемента массива.
- Улучшенное управление секционированными таблицами с использованием подкоманд
SPLIT PARTITION и MERGE PARTITIONS команды ALTER TABLE: первая разделяет одну секцию на несколько, вторая объединяет несколько секций в одну. - Экспериментальная функциональность, которая включает механизм параллельного выполнения запросов для запросов, использующих хотя бы одну временную таблицу. Эта функциональность полезна для 1C. (См. описание параметра enable_parallel_temptables.)
- Оценка приблизительной стоимости сброса страниц временных таблиц на диск. Эта функциональность полезна для 1C. (См. описание параметра write_page_cost.)
- Возможность преобразования подзапросов
ANY в соединения LATERAL. (См. описание параметра enable_any_to_lateral_transformation.) - Возможность исследовать повреждённые базы данных с помощью функции
pg_snapshot_any. За подробностями обратитесь к Подраздел 9.28.13. - Улучшенная производительность поиска сегментов для более быстрого вычисления размера таблиц.
- Улучшенная производительность в многоядерных системах за счёт увеличения до 1024 количества секций хеш-таблицы сопоставлений в общем буфере.
- Ускоренная обработка журнала предзаписи (WAL) и TOAST и снижение использования дискового пространства за счёт замены значений по умолчанию параметров default_toast_compression и wal_compression на
lz4. - Подключаемый механизм TOAST, позволяющий разрабатывать и подключать пользовательские реализации TOAST для столбцов таблиц и типов данных в дополнение к реализации по умолчанию. (За подробностями обратитесь к Подраздел 66.2.3.)
- Автоматическое определение провайдера локалей на основании значения
--lc-collate, если провайдер локали не указан в базе данных: libc для локалей C или POSIX, icu для всех других локалей. Также значение по умолчанию параметра --icu-locale совпадает со значением параметра --locale, если оно задано. В противном случае используется значение параметра 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_hint_plan, управляющий планом выполнения запросов со специальными указаниями для планировщика.
- Модуль pg_integrity_check, осуществляющий вычисление и проверку контрольных сумм отслеживаемых файлов. (Только сертифицированная редакция.)
- Расширение pg_proaudit, позволяющее отслеживать различные события, связанные с безопасностью.
- Расширение pgpro_anonymizer, позволяющее маскировать или заменять конфиденциальные коммерческие данные или информацию, по которой можно установить личность, в БД Postgres Pro.
- Расширение pgpro_application_info, которое предназначено для помощи разработчикам в переносе приложений, использующих пакет
DBMS_APPLICATION_INFO, из Oracle в Postgres Pro. - Расширение pgpro_autopart, реализующее динамическое создание секций.
- pg_probackup — менеджер резервного копирования и восстановления.
- Решение pg_probackup3 для резервного копирования и восстановления кластеров баз данных Postgres Pro.
- Расширение pg_trgm_mchar, обеспечивающее быстрый поиск схожих строк типов
mchar и mvarchar на основе триграмм. Это расширение полезно для 1C. - Расширение 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_gbtree, позволяющее создавать и использовать глобальные индексы для секционированных таблиц. Глобальный индекс создаётся для одного или нескольких столбцов секционированной таблицы и не включает ключ секционирования. Это позволяет выполнять сканирование индекса без перебора всех секций.
- Расширение pgpro_ilm, позволяющее переносить редко используемые отношения в более дешёвое хранилище. Эта функциональность аналогична управлению жизненным циклом информации (information lifecycle management, ILM) компании Oracle.
- Расширение pgpro_multiplan, позволяющее сохранять планы выполнения запросов для последующего использования или фиксировать определённый план выполнения. Это расширение также позволяет хранить глобальные подготовленные операторы и совместно использовать их в нескольких сеансах.
- Расширение pgpro_planner, предоставляющее преобразования и оптимизации запросов для создания эффективных планов выполнения запросов и улучшения производительности.
- Расширение pgpro_pwr, позволяющее получать отчёты по нагрузке, полезные для выявления наиболее ресурсоёмких операций в базе данных.
- Расширение pgpro_queue, предоставляющее управление очередями сообщений непосредственно в базе данных.
- Расширение pgpro_result_cache, позволяющее сохранять результаты запросов для повторного использования.
- Расширение pgpro_rp, реализующее функцию приоритизации ресурсов и позволяющее выделять больше ресурсов для сеансов с высоким приоритетом.
- Модуль pgpro_scheduler, в котором реализованы фоновые исполнители для планируемых задач.
- Модуль pgpro_sfile, предоставляющий функциональность, схожую c LOB в Oracle, и позволяющий хранить объекты с большим объёмом данных, называемые объектами
sfile. Максимальное количество таких объектов, а также размер объекта в байтах ограничены 2^63 - 1. - Расширение pgpro_stats, которое собирает статистику выполнения SQL-операторов, подсчитывает статистику событий ожидания и предоставляет прочие полезные метрики, которые в PostgreSQL нельзя получить никак иначе. Оно также обеспечивает возможность трассировки сеансов приложений и может создавать представления, эмулирующие другие расширения для сбора статистики.
- Расширение pgpro_tde, обеспечивающее защитное преобразование на уровне страниц в Postgres Pro Enterprise.
- Утилита pgpro_tune для автоматической настройки параметров конфигурации Postgres Pro. Она предоставляет набор встроенных пресетов, включая пресет для настройки, специфичной для 1С.
- Расширение pgpro_usage, предоставляющее статистику доступа к отношениям и вызова функций в разрезе пользователей, включая представление, показывающее, какие права не используются, и функции, которые возвращают дату и время последнего обращения к таблицам.
- Модуль pg_query_state, дающий возможность узнавать текущее состояние выполнения запросов в обслуживающем процессе.
- Утилита pg_repack для реорганизации таблиц.
- Модуль pg_transfer, осуществляющий поддержку перемещаемых таблиц.
- Модуль pg_tsparser — альтернативный анализатор текстового поиска.
- Модуль pg_variables, предоставляющий функции для работы с переменными различных типов. Для облегчения миграции кода Oracle, обрабатывающего коллекции, доступны следующие виды функций: функции, позволяющие работать с общими переменными-коллекциями, к элементам которых можно получить доступ по ключу, имеющему целочисленный или текстовый тип; функции, обеспечивающие функциональность итератора для любых коллекций.
- Расширение pgvector, предоставляющее поиск сходства векторов в Postgres Pro.
- Расширение pg_wait_sampling, предназначенное для периодического сбора статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания во всех обычных и фоновых рабочих процессах.
- Модуль plantuner, добавляющий поддержку указаний для планировщика, подключающих или отключающих определённые индексы при выполнении запроса.
- Расширение proxima, объединяющее функциональность прокси-сервера и пула соединений.
- Модуль rum, предоставляющий индекс RUM на базе GIN.
- Модуль shared_ispell, позволяющий разместить словари в общей памяти.
- Расширение 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 и включает дополнительную цифру.