2. Различия между Postgres Pro Standard и PostgreSQL #
Postgres Pro предоставляет наиболее актуальную версию PostgreSQL c дополнительными изменениями и расширениями. Этот продукт включает все новые возможности, реализованные компанией Postgres Professional, а также сторонние доработки, которые уже приняты сообществом PostgreSQL и попадут в новые версии PostgreSQL. Таким образом, пользователи Postgres Pro Standard получают ранний доступ к важным нововведениям и исправлениям.
Примечание
Postgres Pro Standard предоставляется по следующей лицензии: https://postgrespro.ru/EULA_DBMS. Обязательно ознакомьтесь с условиями лицензии, прежде чем загружать и использовать Postgres Pro Standard.
Postgres Pro Standard отличают от PostgreSQL следующие усовершенствования:
- Улучшенный механизм проверки блокировок, не оказывающий отрицательного влияния на производительность.
- Увеличенная скорость и эффективность планирования для различных типов запросов.
- Уменьшенное потребление памяти при обработке сложных запросов со множеством таблиц.
- Добавление времени планирования в информацию, выводимую модулем 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 совместно без каких-либо конфликтов. (См. Главу 16.)
- Журнал операций, в котором хранится информация о критически важных системных событиях, таких как обновление, выполнение pg_resetwal и тому подобное. Эта информация важна для осуществления технической поддержки со стороны поставщика. Запись в журнал операций производится только на системном уровне, а для его чтения используются функции SQL. (См. Подраздел 9.28.11.)
- Расширенные политики аутентификации, обеспечивающие эффективное управление паролями и контроль доступа. (См. 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.12. - Улучшенная производительность поиска сегментов для более быстрого вычисления размера таблиц.
- Улучшенная производительность в многоядерных системах за счёт увеличения до 1024 количества секций хеш-таблицы сопоставлений в общем буфере.
- Ускоренная обработка журнала предзаписи (WAL) и TOAST и снижение использования дискового пространства за счёт замены значений по умолчанию параметров default_toast_compression и wal_compression на
lz4. - Подключаемый механизм TOAST, позволяющий разрабатывать и подключать пользовательские реализации TOAST для столбцов таблиц и типов данных в дополнение к реализации по умолчанию. (За подробностями обратитесь к Подраздел 64.2.3.)
- Автоматическое определение провайдера локалей на основании значения
--lc-collate, если провайдер локали не указан в базе данных:libcдля локалейCилиPOSIX,icuдля всех других локалей. Также значение по умолчанию параметра--icu-localeсовпадает со значением параметра--locale, если оно задано. В противном случае используется значение параметра lc_collate. За дополнительной информацией обратитесь к initdb, createdb и CREATE DATABASE. - Смягчение ограничений синхронной репликации, в результате которого ведущий сервер может продолжать работать при временной недоступности одного из ведомых. (См. описание параметра synchronous_standby_gap.)
Postgres Pro Standard также включает следующие дополнительные модули и приложения:
- Расширение aqo для адаптивной оптимизации запросов.
- Модуль auto_dump для сбора данных по длительным и проблемным запросам и последующего воспроизведения этих запросов с целью устранения неполадок.
- Расширение biha, управляемое с помощью утилиты bihactl и превращающее Postgres Pro в кластер с физической репликацией и встроенным механизмом аварийного переключения узлов, отказоустойчивостью и восстановлением после сбоя узла.
- Расширение daterange_inclusive, позволяющее добавлять в вывод верхнюю границу временного диапазона.
- Модуль dump_stat, позволяющий сохранять статистику данных при резервном копировании и восстановлении.
- Модуль fasttrun, который предоставляет транзакционно-небезопасную функцию для усечения временных таблиц, что предотвращает разрастание каталога
pg_class. - Модуль fulleq, предоставляющий дополнительный оператор равенства для совместимости с Microsoft SQL Server.
- Модуль hunspell-dict, предоставляющий словари для ряда языков.
- Расширение hypopg, обеспечивающее поддержку гипотетических индексов в Postgres Pro.
- Модуль jsquery, реализующий специальный язык запросов для эффективного поиска по индексу в структурированных данных JSONB.
- Утилита ldap2pg, позволяющая автоматизировать процесс создания, изменения и удаления ролей и пользователей корпоративного каталога Postgres Pro.
- Служба мониторинга mamonsu, исполненная в виде агента Zabbix.
- Модуль mchar, предоставляющий дополнительный тип данных для совместимости с Microsoft SQL Server.
- Модуль online_analyze, привносящий набор функций, которые немедленно обновляют статистику в целевых таблицах после операций
INSERT,UPDATE,DELETEилиSELECT INTOв них. - pgbadger — инструмент для быстрого анализа журналов Postgres Pro с созданием подробных отчётов и графиков.
- Пул соединений pgbouncer.
- Утилита pgbouncer_exporter, экспортирующая метрики Prometheus для pgbouncer.
- Модуль pg_hint_plan, управляющий планом выполнения запросов со специальными указаниями для планировщика.
- Модуль pg_integrity_check, осуществляющий вычисление и проверку контрольных сумм отслеживаемых файлов. (Только сертифицированная редакция.)
- Расширение pg_proaudit, позволяющее отслеживать различные события, связанные с безопасностью.
- Расширение pgpro_autopart, реализующее динамическое создание секций.
- Расширение pg_trgm_mchar, обеспечивающее быстрый поиск схожих строк типов
mcharиmvarcharна основе триграмм. Это расширение полезно для 1C. - Расширение pgpro_anonymizer, позволяющее маскировать или заменять конфиденциальные коммерческие данные или информацию, по которой можно установить личность, в БД Postgres Pro.
- pg_probackup — менеджер резервного копирования и восстановления.
- Решение pg_probackup3 для резервного копирования и восстановления кластеров баз данных Postgres Pro.
- Модуль pgpro_bindump для управления операциями резервного копирования и восстановления. В модуле реализованы специализированные команды репликации для расширенного протокола репликации и собственный формат архивирования. Модуль не требует подключения по SSH. Он разработан специально для использования вместе с утилитой pg_probackup3.
- Утилита pgpro_controldata, показывающая управляющую информацию кластера БД PostgreSQL/Postgres Pro и параметры совместимости кластера и/или сервера.
- pg_filedump — приложение для отображения отформатированного содержимого управляющего файла, а также файлов кучи и индекса Postgres Pro.
- Расширение pgpro_cpumeter, которое предоставляет доступ к новой системной функции мониторинга использования процессора. Функция
pgpro_cpumeterнепрерывно собирает и записывает информацию о ядрах процессора, используемых процессами сервера Postgres Pro. - Утилита pgpro_datactl для управления файлами данных Postgres Pro, которая включает в себя модуль оценки коэффициентов сжатия для различных алгоритмов сжатия.
- Расширение pgpro_pwr, позволяющее получать отчёты по нагрузке, полезные для выявления наиболее ресурсоёмких операций в базе данных.
- Утилита pgpro_scout для обнаружения чувствительной (конфиденциальной) информации в базе данных. Задача утилиты провести разведку данных на предмет наличия такой информации и привести примеры.
- Расширение pgpro_stats, которое собирает статистику выполнения SQL-операторов, подсчитывает статистику событий ожидания и предоставляет прочие полезные метрики, которые в PostgreSQL нельзя получить никак иначе. Оно также обеспечивает возможность трассировки сеансов приложений и может создавать представления, эмулирующие другие расширения для сбора статистики.
- Утилита pgpro_tune для автоматической настройки параметров конфигурации Postgres Pro. Она предоставляет набор встроенных пресетов, включая пресет для настройки, специфичной для 1С.
- Утилита pgpro_validate для проверки целостности данных экземпляра Postgres Pro.
- Модуль pg_query_state, дающий возможность узнавать текущее состояние выполнения запросов в обслуживающем процессе.
- Утилита pg_repack для реорганизации таблиц.
- Модуль pg_tsparser — альтернативный анализатор текстового поиска.
- Модуль pg_variables, предоставляющий функции для работы с переменными различных типов. Для облегчения миграции кода Oracle, обрабатывающего коллекции, доступны следующие виды функций: функции, позволяющие работать с общими переменными-коллекциями, к элементам которых можно получить доступ по ключу, имеющему целочисленный или текстовый тип; функции, обеспечивающие функциональность итератора для любых коллекций.
- Расширение pgvector, предоставляющее поиск сходства векторов в Postgres Pro.
- Расширение pg_wait_sampling, предназначенное для периодического сбора статистики по событиям ожидания. Воспользовавшись этим расширением, вы сможете понять характер активности сервера, в том числе увидеть текущие события ожидания во всех обычных и фоновых рабочих процессах.
- Модуль plantuner, добавляющий поддержку указаний для планировщика, подключающих или отключающих определённые индексы при выполнении запроса.
- Модуль rum, предоставляющий индекс RUM на базе GIN.
- Модуль shared_ispell, позволяющий разместить словари в общей памяти.
Postgres Pro предоставляет расширенные возможности и функциональность, поэтому предъявляет более строгие требования, ограничивающие множество поддерживаемых операционных систем.
Важно
Postgres Pro Standard работает на всех основных операционных системах Linux. Любые упоминания Windows или другой операционной системы, отличной от Linux, в этой документации неприменимы к Postgres Pro.
Выпуски Postgres Pro Standard следуют за выпусками PostgreSQL, хотя иногда могут выпускаться чаще. Схема версионирования Postgres Pro Standard основана на схеме версионирования PostgreSQL и включает дополнительную цифру.
2. Difference between Postgres Pro Standard and PostgreSQL #
Postgres Pro provides the most actual PostgreSQL version with some additional patches applied and extensions added. It includes new features developed by Postgres Professional, as well as third-party patches already accepted by the PostgreSQL community for the upcoming PostgreSQL versions. Postgres Pro Standard users thus have early access to important features and fixes.
Note
Postgres Pro Standard is provided under the following license: https://postgrespro.com/EULA_DBMS. Make sure to review the license terms before downloading Postgres Pro Standard.
Postgres Pro Standard provides the following enhancements over PostgreSQL:
- Improved deadlock detection mechanism that does not cause performance degradation.
- Better planning speed and accuracy for various query types.
- Reduced memory consumption in complex queries that involve multiple tables.
- Displaying planning time in the output of the auto_explain module.
NUL byte replacement with the specified ASCII code while loading data using the
COPY FROMcommand. (See nul_byte_replacement_on_import parameter description.)'\u0000'character replacement with the specified unicode character when calling a function processing JSONB. (See unicode_nul_character_replacement_in_jsonb parameter description.)- PTRACK implementation, which enables pg_probackup to track page changes on the fly when creating incremental backups.
- Support for reading
pg_controlof previous PostgreSQL/Postgres Pro major versions by pgpro_controldata. - Cluster compatibility verification, which allows you to determine whether the current Postgres Pro version is compatible with the specified cluster and identify all parameters that can affect the compatibility without starting the cluster. (See pgpro_controldata and
-Zoption of postgres.) - Unified structure of binary installation packages across all Linux distributions, which facilitates migration between them and allows installing PostgreSQL-based products side by side, without any conflicts. (See Chapter 16.)
- Operation log, which stores information about system events such as an upgrade, execution of pg_resetwal and so on, which is highly useful for vendor's technical support. Recording to the operation log is only done at the system level, and SQL functions are used to read it. (See Section 9.28.11.)
- Advanced authentication policies that provide effective password management and access control. (See CREATE PROFILE and ALTER ROLE).
- Built-in data security mechanisms that enable sanitizing an object by filling it with zeroes before deletion. Zeroing can be done before purging files in external memory and removing outdated row versions (page vacuum), freeing RAM, and deleting or overwriting WAL files. (Certified edition only.)
- Statistics about vacuuming tables, indexes and databases in system views.
- Predefined roles, which allow creating tablespaces and managing profiles without superuser rights.
- Getting information on crashes of a backend, which is enabled by the crash_info configuration parameter and controlled by more of them.
- Optimized memory consumption during selectivity estimation for each array element.
- Improved partitioned table management by means of the
SPLIT PARTITIONandMERGE PARTITIONSsubcommands in theALTER TABLEcommand, which split a single partition into several partitions and merge several partitions into one, respectively. - The parallel query execution mechanism for queries that involve at least one temporary table. This feature is useful for 1C. (See enable_parallel_temptables parameter description.)
- Estimating the cost of flushing temporary table pages to disk. This feature is useful for 1C. (See write_page_cost parameter description.)
- Enabling transformation of
ANYsubqueries intoLATERALjoins. (See enable_any_to_lateral_transformation parameter description.) - The ability to explore corrupted databases using the
pg_snapshot_anyfunction. See Section 9.28.12 for details. - Enhanced performance of segment search for better speed of table size calculations.
- Improved performance on multi-core systems by increasing the number of partitions of the shared buffer mapping hash table to 1024.
- Faster WAL and TOAST processing and reduced disk space utilization by updating the default values of default_toast_compression and wal_compression to
lz4. - Pluggable TOAST that allows you to develop and plug in custom TOAST implementations for table columns and data types in addition to the default one. (See Section 64.2.3 for details.)
- Automatic detection of the locale provider based on the
--lc-collatevalue if the locale provider is not specified in the database:libcis used for theCorPOSIXlocales, andicuis used for other locales. Also, the default value of the--icu-localeparameter is the setting of--localeif specified and otherwise the value of lc_collate. For more information, see initdb, createdb, and CREATE DATABASE. - Support for relaxed synchronous replication restrictions, which allows the primary server to continue running while some of the standbys are temporarily unavailable. (See synchronous_standby_gap parameter description.)
Postgres Pro Standard also includes the following additional modules and applications:
- aqo extension for adaptive query optimization.
- auto_dump module that collects data on long-running and problematic queries and reproduces these problems for troubleshooting.
- biha extension, which is managed with the bihactl utility, that turns Postgres Pro into a cluster with physical replication and built-in failover, high availability, and node failure recovery.
- daterange_inclusive extension, which allows you to include the upper bound of a time range in the output.
- dump_stat module that allows to save and restore database statistics when dumping/restoring the database.
- fasttrun module that provides transaction-unsafe function to truncate temporary tables without growing
pg_classsize. - fulleq module that provides additional equivalence operator for compatibility with Microsoft SQL Server.
- hunspell-dict module that provides dictionaries for several languages.
- hypopg extension, which provides support for hypothetical indexes in Postgres Pro.
- jsquery module that provides a specific language for effective index-supported querying of JSONB data.
- ldap2pg utility that automates the creation, update, and removal of Postgres Pro roles and users from an enterprise directory.
- mamonsu monitoring service, which is implemented as a Zabbix agent.
- mchar module that provides additional data type for compatibility with Microsoft SQL Server.
- online_analyze module that provides a set of changes to immediately update statistics after
INSERT,UPDATE,DELETEorSELECT INTOoperations applied for affected tables. - pgbadger application that rapidly analyzes Postgres Pro logs, producing detailed reports and graphs.
- pgbouncer connection pooler.
- pgbouncer_exporter utility to export Prometheus metrics for pgbouncer.
- pg_hint_plan module that controls the execution plan by providing hints to the planner.
- pg_integrity_check module that calculates and validates checksums for controlled files. (Certified edition only.)
- pg_proaudit extension that enables detailed logging of various security events.
- pgpro_autopart extension that enables dynamic partition creation.
- pg_trgm_mchar extension that allows fast trigram-based search for similar
mcharandmvarcharstrings. This extension is useful for 1C. - pgpro_anonymizer extension that provides the ability to mask or replace personally identifiable information or commercially sensitive data from a Postgres Pro database.
- pg_probackup, a backup and recovery manager.
- pg_probackup3 solution for backup and recovery of Postgres Pro database clusters.
- pgpro_bindump module to manage backup and restore operations. This module implements specialized replication commands for an extended replication protocol, has its own format for archiving files, and does not require SSH connection. It is designed specifically for use with the pg_probackup3 utility.
- pgpro_controldata, an application to display control information of a PostgreSQL/Postgres Pro database cluster and compatibility information for a cluster and/or server.
- pg_filedump application that displays formatted contents of a Postgres Pro heap, index, or control file.
- pgpro_cpumeter, an extension providing access to a new CPU usage monitoring system function. This
pgpro_cpumeterfunction continuously collects and records information about CPU cores used by Postgres Pro server processes. - pgpro_datactl utility to manage Postgres Pro data files, which includes a module for estimating compression ratios for different compression algorithms.
- pgpro_pwr extension that enables you to generate workload reports, which help to discover most resource-intensive activities in your database.
- pgpro_scout utility to detect sensitive (confidential) information in your database. The utility performs data intelligence to determine whether such information exists and show sensitive data samples.
- pgpro_stats extension that tracks execution statistics of SQL statements, calculates wait event statistics and provides other useful metrics that are not collected elsewhere in PostgreSQL. It also provides tracing of application sessions and can create views that emulate other statistic collecting extensions.
- pgpro_tune utility for automatic tuning of Postgres Pro configuration parameters. It provides a set of built-in presets including a preset for 1C-specific configuration.
- pgpro_validate utility to check data integrity of a Postgres Pro instance.
- pg_query_state module that enables you to get the current state of query execution for a backend.
- pg_repack utility for reorganizing tables.
- pg_tsparser module, which is an alternative text search parser.
- pg_variables module that provides functions for working with variables of various types. To facilitate migration of Oracle code that processes collections, these functions include those that allow working with general collection variables, whose elements can be accessed by a key that can have either integer or text type, and those that provide iterator functionality for any collections.
- pgvector extension that provides vector similarity search for Postgres Pro.
- pg_wait_sampling extension for sampling-based statistics of wait events. With this extension, you can get an insight into the server activity, including the current wait events for all processes and background workers.
- plantuner module that provides hints for the planner to disable or enable indexes for query execution.
- rum module that provides RUM index based on GIN.
- shared_ispell module that enables storing dictionaries in shared memory.
To provide the advanced functionalities and features, Postgres Pro imposes more stringent requirements on operating systems supported.
Important
Postgres Pro Standard runs on all major Linux operating systems. Any reference to Windows or another operating system different from Linux in this documentation is inapplicable for Postgres Pro.
Postgres Pro Standard releases follow PostgreSQL releases, though sometimes occur more frequently. The Postgres Pro Standard versioning scheme is based on the PostgreSQL one and has an additional decimal place.