E.6. Примечания к выпуску для Tantor Certified 15.6.1#
E.6. Примечания к выпуску для Tantor Certified 15.6.1
- E.6.1. Обзор
- E.6.2. Существенные отличия в этой версии
- E.6.3. Исправления в ядре Tantor Certified
- E.6.4. Метод поставки
- E.6.5. Исправления в пакетировании
- E.6.6. Дополнительно поставляемые модули
- E.6.7. Исправления дополнительно поставляемых модулей
- E.6.8. Поддерживаемые операционные системы
- E.6.9. Миграция на версию 15.6.1
Дата релиза: 2024-05-22
E.6.1. Обзор
Tantor Certified — это российская СУБД, основанная на обновленной и улучшенной версии СУБД PostgreSQL. Tantor Certified 15.6.1 основана на PostgreSQL 15.
Ниже приведены дополнительные модули и утилиты, добавленные в Tantor Certified, а также список изменений в ядре сервера.
E.6.2. Существенные отличия в этой версии
E.6.2.1. Реализован 64-битный счетчик транзакций
В PostgreSQL есть ограничение (N = 2^32) на количество идентификаторов транзакций (XID); при достижении этого ограничения необходимо выполнить процедуру заморозки. Эта процедура необходима для предотвращения зацикливания (каждые N/2 транзакций), что приводит к снижению производительности из-за необходимости чтения и перезаписи всех страниц таблицы, которые еще не заморожены. С 64-битным XID эта необходимость фактически откладывается на очень далекое будущее.
Переполнение счетчика транзакций теперь возможно только в пределах одной страницы, только если удерживается снимок более 4 миллиардов транзакций, что на практике сложно достичь. В будущем планируется также убрать это ограничение.
- xid64 details:
E.6.2.2. Поддержка автономных транзакций в PL/pgSQL
Добавлено расширение языка PL/pgSQL для автономных транзакций. Это расширение частично наследует синтаксис PL/SQL из Oracle (PRAGMA AUTONOMOUS_TRANSACTION).
Расширение предоставляет возможность независимого фиксирования или отмены дочерней транзакции без влияния на текущую родительскую транзакцию, например, для поддержки аудита.
Расширение языка реализует автономные транзакции через механизм фонового процесса.
Будущие версии будут добавлять поддержку расширений языка PL/Python и SQL.
E.6.2.3. Добавлена возможность создания двунаправленной логической репликации
Теперь можно использовать двунаправленную логическую репликацию между двумя таблицами, добавив новый параметр origin к команде CREATE SUBSCRIPTION.
Параметр origin может иметь два возможных значения: none и any.
Установка origin в none означает, что подписка будет запрашивать у издателя только изменения, не имеющие источника. То есть origin=none предотвращает зацикливание при двунаправленной репликации.
Установка origin=any означает, что издатель отправляет изменения независимо от их источника (так же, как в PostgreSQL). По умолчанию origin=any.
E.6.2.4. Добавлена поддержка сжатия в библиотеке libpq
Добавлена поддержка сжатия в библиотеке libpq, реализованная новым параметром в конфигурации libpq_compression. Функциональность может использоваться клиентскими приложениями и драйверами, написанными на C или других языках, поддерживающих вызовы API к C.
Параметр libpq_compression может принимать следующие значения: off, on, lz4, zlib. По умолчанию libpq_compression = off.
Сжатие особенно полезно для импорта/экспорта данных с использованием команды COPY и для репликации (как физической, так и логической). Сжатие также может уменьшить время отклика сервера Tantor SE-1С для запросов, возвращающих большие объемы данных (например, JSON, BLOB, текст и т.д.).
- libpq-compression details:
E.6.2.5. Реализована SIMD-обработка данных
Ускорение обработки данных с помощью нескольких модификаций ядра Tantor Certified, которые реализуют вычислительную модель SIMD (Single Instruction, Multiple Data).
Улучшена производительность Tantor Certified за счет более эффективного использования ресурсов процессора, особенно при обработке больших объемов данных или сложной обработки данных, таких как обработка текстовых и JSON данных.
Среди реализованных функций: оптимизация линейного поиска, поддержка SSE2 (Streaming SIMD Extensions 2), абстракция зависимых от архитектуры частей, поддержка SIMD NEON.
E.6.2.6. Резервирование соединений
Добавлена возможность резервирования слотов соединений для пользователей, не имеющих прав суперпользователя.
Соединения зарезервированы с помощью нового параметра конфигурации reserved_connections (в файле postgresql.conf) и доступны только пользователям с новой предопределенной ролью pg_use_reserved_connections.
Значение параметра superuser_reserved_connections остается в качестве последнего резерва в случае исчерпания reserved_connections.
- reserved_connections details:
E.6.2.7. Добавлен параметр transaction_timeout
Параметр transaction_timeout позволяет отменить любую транзакцию, длительность которой превышает указанный период времени. Ограничение распространяется как на явные транзакции (начатые командой BEGIN), так и на неявно начатые транзакции, соответствующие отдельному оператору.
- transaction_timeout details:
E.6.2.8. Предварительное чтение блоков для журнала предзаписи (WAL)
Производительность улучшена за счет предварительного чтения блоков журнала Tantor Certified (блоки WAL) с использованием системного вызова posix_fadvise() с параметром POSIX_FADV_WILLNEED.
Добавлено новое событие WAIT_EVENT_WAL_PREFETCH для отслеживания времени предварительного чтения WAL.
E.6.3. Исправления в ядре Tantor Certified
Исправлена неправильная обработка типа данных
TYPALIGN_XID
при включенной JIT.Исправлена ошибка "cache lookup failed for type" при использовании автономных транзакций.
Исправлено поведение автономных транзакций для хранимых процедур.
Добавлен механизм для проверки контрольных сумм журнала транзакций.
Некоторые незначительные исправления, связанные с llvmjit.
Внесены изменения для улучшения стабильности СУБД.
Изменения, внесенные для улучшения производительности СУБД при большом количестве одновременных подключений.
Реализован пул потоков для автономных транзакций, что ускоряет создание автономных транзакций.
Расширено использование SIMD (Single Instruction, Multiple Data) для нескольких функций линейного поиска.
Объединена версия
libzstd
, используемая.Оптимизированная производительность планировщика для сценариев 1С.
Исправлена редкая ошибка "отсутствует номер фрагмента 0 для toast-значения XXX в pg_toast_XXX" при работе с 64-битным счетчиком транзакций.
Улучшена информативность серверных журналов.
E.6.4. Метод поставки
Теперь доступны для установки три пакета:
Полный пакет СУБД (сервер, заголовочные файлы, клиентские приложения, libpq5)
Клиентские приложения
libpq5 (библиотека, которая позволяет пользовательским программам подключаться к серверам баз данных Tantor Certified и PostgreSQL)
E.6.5. Исправления в пакетировании
Исправлена логика предварительной установки и пост-деинсталляции для пакетов RPM и DEB.
E.6.6. Дополнительно поставляемые модули
E.6.6.1. Добавленные модули в текущем релизе
Таблица E.1. Таблица расширений
Расширение | Описание |
---|---|
credcheck | Модуль предоставляет несколько общих проверок учетных данных, которые будут оцениваться во время создания пользователя, изменения пароля и переименования пользователя. С использованием этого расширения можно определить набор правил для разрешения определенного набора учетных данных и набор правил для отклонения определенного типа учетных данных. Это расширение разработано на основе хука check_password_hook PostgreSQL. |
dbcopies_decoding | Модуль для поддержки механизма копирования базы данных и ускорителя данных. |
fasttrun | Модуль предоставляет небезопасную для транзакций функцию для усечения временных таблиц без увеличения размера pg_class. Этот модуль необходим для поддержки 1C Enterprise. Операция быстрого усечения не является транзакционной, поэтому ее результаты не могут быть отменены и становятся немедленно видимыми во всех сессиях независимо от уровня изоляции. |
fulleq | Модуль предоставляет дополнительный оператор эквивалентности для совместимости с Microsoft SQL Server. Этот модуль необходим для поддержки 1С:Предприятие. |
hypopg | Модуль добавляет поддержку для hypothetical_indexes. Гипотетический или виртуальный индекс — это индекс, который фактически не существует. Таким образом, не требуется ни ЦП, ни диск, ни какие-либо другие ресурсы для его создания. Это полезно, чтобы узнать, могут ли определенные индексы улучшить производительность проблемных запросов, так как можно узнать, будет ли Tantor использовать эти индексы или нет, не тратя ресурсы на их создание. |
mchar | Модуль, разработанный для улучшения поддержки 1С:Предприятие, самой популярной российской CRM и ERP системы. Реализованы типы MCHAR и MVARCHAR, которые совместимы с MS SQL CHAR и VARCHAR соответственно. Кроме того, эти типы используют библиотеку ICU для сравнения и преобразования регистра, поэтому их поведение идентично на разных операционных системах. В СУБД Tantor также включено расширение citext, которое предоставляет типы, аналогичные MCHAR. Однако это расширение не эмулирует поведение MS-SQL в отношении пробелов в конце значения. |
online_analyze | Модуль выполняет активацию сбора статистики сразу после INSERT/UPDATE/DELETE/SELECT INTO для задействованных таблиц. |
orafce | Модуль представляет собой набор функций, которые обеспечивают совместимость с базами данных Oracle. Эти функции позволяют упростить миграцию на Tantor и сократить расходы на перенастройку приложений. |
Оптимизированный строково-колоночный (ORC) | Модуль предоставляет колоночный метод хранения данных с возможностью сжатия для уменьшения объема ввода-вывода и обеспечения высокой производительности. Применимо только для добавления, например, временные ряды данных и отображения корпоративных хранилищ. |
page_repair | Модуль для восстановления отдельных поврежденных страниц с использованием данных с сервера горячего резервирования. Позволяет сэкономить время восстановления, так как требуется восстановление не всех данных, а только отдельных страниц. |
pg_background | Модуль позволяет пользователю выполнять произвольные команды в фоновом режиме и предоставляет возможность выполнять команды, такие как: VACUUM и CREATE INDEX CONCURRENTLY из SQL, а также выполнять автономные транзакции, включая асинхронный режим. |
pg_cron | Модуль представляет собой планировщик заданий на основе cron, работающий внутри базы данных в качестве расширения. Используется тот же синтаксис, что и у обычного cron, но он позволяет планировать команды Tantor DBMS непосредственно из базы данных. |
pg_hint_plan | Модуль позволяет настраивать планы выполнения SQL-запросов, используя так называемые "подсказки" в комментариях SQL. Это дает возможность компенсировать ошибки планировщика, возникающие в критических случаях. |
pg_partman | Модуль позволяет автоматически создавать и управлять пакетами таблиц, основанными как на временных интервалах, так и на списках. |
pg_qualstats | Модуль сохраняет статистические данные о найденных предикатах в операторах WHERE и операциях JOIN. Это позволяет анализировать наиболее частые квалификаторы (предикаты) в базе данных, а также выявлять коррелированные столбцы, определяя, какие столбцы наиболее часто запрашиваются вместе. |
pg_repack | Модуль позволяет устранить раздутие таблиц и индексов (раздутие) и, при необходимости, восстановить физический порядок кластеризованных индексов (CLUSTER). В отличие от команд CLUSTER и VACUUM FULL, работает онлайн, не удерживая исключающую блокировку таблиц, обслуживаемых во время операции. |
pg_store_plans | Модуль предоставляет средства для отслеживания статистики выполнения планов для всех SQL-запросов, выполненных сервером Tantor. |
pg_variables | Модуль предоставляет функциональность для работы с переменными различных типов в текущей пользовательской сессии. |
pg_wait_sampling | Модуль предоставляет информацию о текущем ожидающем событии для определенного процесса. Однако, чтобы собрать описательную статистику поведения сервера, пользователю необходимо многократно собирать текущее ожидающее событие. Этот модуль представляет собой расширение для сбора выборочной статистики ожидающих событий, что предотвращает ненужное выборочное ожидание текущего события. |
pgaudit | Модуль предоставляет детализированное ведение аудита сессий и/или объектов через стандартное средство ведения журналов Tantor DBMS. Цель pgAudit заключается в предоставлении пользователям Tantor DBMS возможности создавать журналы аудита, которые часто требуются для соответствия государственным, финансовым или ISO сертификациям. |
pgauditlogtofile | Является дополнением к pgAudit, которое будет перенаправлять строки аудита в независимый файл, вместо использования регистратора сервера PostgreSQL. Это позволит иметь файл аудита, который можно легко ротировать, не засоряя журналы сервера этими сообщениями. Аудиторские журналы в системах с высокой нагрузкой могут расти очень быстро. Это расширение позволяет автоматически ротировать файлы на основе количества минут. |
pgq | Модуль предоставляет универсальную высокопроизводительную неблокирующую очередь с простым API, основанным на SQL функциях. |
pgsql-http | Модуль позволяет создать триггер, который вызывает веб-сервис, доступный для возврата результата, или обновляет сервис в соответствии с новым состоянием базы данных. |
plantuner | Модуль предоставляет возможность управлять планировщиком, предоставляя подсказки, которые заставляют оптимизатор частично игнорировать его алгоритм. |
E.6.6.2. Дополнительные поставляемые программы
Таблица E.2. Таблица утилит
Утилита | Описание |
---|---|
pgcompacttable
| pgcompacttable - это инструмент уменьшения размера раздутых таблиц и индексов (блокировка) без серьезной блокировки. Он предназначен для переорганизации данных в таблицах и перестроения индексов для восстановления дискового пространства без влияния на производительность базы данных. |
E.6.7. Исправления дополнительно поставляемых модулей
Исправлена ошибка сегментации в редких сценариях использования
pg_store_plans
.Оптимизирована производительность
fasttrun
.Оптимизирована производительность
online_analyze
.
E.6.8. Поддерживаемые операционные системы
Список поддерживаемых операционных систем (ОС) был расширен. Полный список приведен ниже:
AstraLinux 1.7
AstraLinux 1.8
Redos 7.3
Сборки СУБД создаются и тестируются для этих операционных систем на постоянной основе.
E.6.9. Миграция на версию 15.6.1
Для миграции с PostgreSQL или Tantor DB сначала установите последнюю минорную версию, а затем выполните выгрузку/восстановление данных, применяя утилиту pg_dumpall или используя утилиту pg_upgrade.