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.
- Подробности о параметре origin:
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.
- reserved_connections details:
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.