E.11. Примечания к выпуску для Tantor SE 15.2.0#

E.11. Примечания к выпуску для Tantor SE 15.2.0

E.11. Примечания к выпуску для Tantor SE 15.2.0

Дата релиза:  2023-06-01

E.11.1. Обзор

Tantor SE — это российская СУБД, основанная на обновленной и улучшенной версии СУБД PostgreSQL. Tantor SE 15.2.0 основана на PostgreSQL 15.

Ниже приведены дополнительные модули и утилиты, добавленные в Tantor SE 15, а также список изменений в ядре сервера.

E.11.2. Существенные отличия в этой версии

E.11.2.1. Реализован 64-битный счетчик транзакций

  • В PostgreSQL есть ограничение (N = 2^32) на количество идентификаторов транзакций (XID); при достижении этого ограничения необходимо выполнить процедуру заморозки. Эта процедура необходима для предотвращения зацикливания (каждые N/2 транзакций), что приводит к снижению производительности из-за необходимости чтения и перезаписи всех страниц таблицы, которые еще не заморожены. С 64-битным XID эта необходимость фактически откладывается на очень далекое будущее.

  • Переполнение счетчика транзакций теперь возможно только в пределах одной страницы, только если удерживается снимок более 4 миллиардов транзакций, что на практике сложно достичь. В будущем планируется также убрать это ограничение.

Подробности о xid64:

конфигурация буферов

E.11.2.2. Поддержка автономных транзакций в PL/pgSQL

  • Добавлено расширение языка PL/pgSQL для автономных транзакций. Это расширение частично наследует синтаксис PL/SQL из Oracle (PRAGMA AUTONOMOUS_TRANSACTION).

  • Расширение предоставляет возможность независимого фиксирования или отмены дочерней транзакции без влияния на текущую родительскую транзакцию, например, для поддержки аудита.

  • Расширение языка реализует автономные транзакции через механизм фонового процесса.

  • Будущие версии будут добавлять поддержку расширений языка PL/Python и SQL.

E.11.2.3. Добавлена возможность создания двунаправленной логической репликации

  • Теперь можно использовать двунаправленную логическую репликацию между двумя таблицами, добавив новый параметр origin к команде CREATE SUBSCRIPTION.

  • Параметр origin может иметь два возможных значения: none и any.

  • Установка origin в none означает, что подписка будет запрашивать у издателя только изменения, не имеющие источника. То есть origin=none предотвращает зацикливание при двунаправленной репликации.

  • Установка origin=any означает, что издатель отправляет изменения независимо от их источника (так же, как в PostgreSQL). По умолчанию origin=any.

E.11.2.4. Добавлена поддержка сжатия в библиотеке libpq

  • Добавлена поддержка сжатия в библиотеке libpq, реализованная новым параметром в конфигурации libpq_compression. Функциональность может использоваться клиентскими приложениями и драйверами, написанными на C или других языках, поддерживающих вызовы API к C.

  • Параметр libpq_compression может принимать следующие значения: off, on, lz4, zlib. По умолчанию libpq_compression = off.

  • Сжатие особенно полезно для импорта/экспорта данных с использованием команды COPY и для репликации (как физической, так и логической). Сжатие также может сократить время отклика сервера Tantor SE на запросы, которые возвращают большие объемы данных (например, JSON, BLOB, текст и т.д.).

Подробности по сжатию в libpq:

E.11.2.5. Реализована SIMD-обработка данных

  • Ускорена обработка данных с помощью нескольких модификаций ядра Tantor SE, реализующих вычислительную модель SIMD (Single Instruction, Multiple Data).

  • Улучшенная производительность Tantor SE за счет более эффективного использования ресурсов процессора, особенно при работе с большими объемами данных или сложной обработкой данных, такой как обработка текста и данных JSON.

  • Среди реализованных функций: оптимизация линейного поиска, поддержка SSE2 (Streaming SIMD Extensions 2), абстракция зависимых от архитектуры частей, поддержка SIMD NEON.

E.11.2.6. Резервирование соединений

  • Добавлена возможность резервирования слотов соединений для пользователей, не имеющих прав суперпользователя.

  • Соединения зарезервированы с помощью нового параметра конфигурации reserved_connections (в файле postgresql.conf) и доступны только пользователям с новой предопределенной ролью pg_use_reserved_connections.

  • Значение параметра superuser_reserved_connections остается в качестве последнего резерва в случае исчерпания reserved_connections.

E.11.2.7. Добавлен параметр transaction_timeout

  • Параметр transaction_timeout позволяет отменить любую транзакцию, длительность которой превышает указанный период времени. Ограничение распространяется как на явные транзакции (начатые командой BEGIN), так и на неявно начатые транзакции, соответствующие отдельному оператору.

transaction_timeout details:

E.11.2.8. Предварительное чтение блоков для журнала предварительного чтения (WAL)

  • Улучшена производительность за счет предварительного чтения блоков журнала Tantor SE (блоков WAL) с использованием системного вызова posix_fadvise() с параметром POSIX_FADV_WILLNEED.

  • Добавлено новое событие WAIT_EVENT_WAL_PREFETCH для отслеживания времени предварительного чтения WAL.

E.11.3. Дополнительно поставляемые модули

E.11.3.1. Добавленные модули в текущем релизе

Таблица E.1. Таблица расширений

Расширение Описание
page_repair Модуль для восстановления отдельных поврежденных страниц с использованием данных с сервера горячего резервирования. Позволяет сэкономить время восстановления, так как требуется восстановление не всех данных, а только отдельных страниц.
pg_background Модуль позволяет пользователю выполнять произвольные команды в фоновом режиме и предоставляет возможность выполнять команды, такие как: VACUUM и CREATE INDEX CONCURRENTLY из SQL, а также выполнять автономные транзакции, включая асинхронный режим.
pg_partman Модуль позволяет автоматически создавать и управлять пакетами таблиц, основанными как на временных интервалах, так и на списках.
pg_repack Модуль позволяет устранить раздутие таблиц и индексов (раздутие) и, при необходимости, восстановить физический порядок кластеризованных индексов (CLUSTER). В отличие от команд CLUSTER и VACUUM FULL, работает онлайн, не удерживая исключающую блокировку таблиц, обслуживаемых во время операции.
pgq Модуль предоставляет универсальную высокопроизводительную неблокирующую очередь с простым API, основанным на SQL функциях.

E.11.3.2. Дополнительные поставляемые программы

Таблица E.2. Таблица утилит

Утилита Описание
pgcompacttable pgcompacttable - это инструмент уменьшения размера раздутых таблиц и индексов (блокировка) без серьезной блокировки. Он предназначен для переорганизации данных в таблицах и перестроения индексов для восстановления дискового пространства без влияния на производительность базы данных.

E.11.4. Поддерживаемые операционные системы

Список поддерживаемых операционных систем (ОС) был расширен. Полный список приведен ниже:

  • Altlinux c9f2 (P8)

  • Altlinux p10

  • AstraLinux 1.7

  • AstraLinux 4.7 (arm64)

  • AstraLinux 2.12

  • Redos 7.3

  • MSVSphere

  • Centos 7

  • Rocky 8

  • Rocky 9

  • Ubuntu 18

  • Ubuntu 20

  • Ubuntu 22

  • Debian 11 Bullseye

  • Debian 10 Buster

Сборки СУБД создаются и тестируются для этих операционных систем на постоянной основе.

E.11.5. Миграция на версию 15.2.0

Для миграции с PostgreSQL или Tantor DB сначала установите последнюю минорную версию, а затем выполните выгрузку/восстановление данных, применяя утилиту pg_dumpall или используя утилиту pg_upgrade.