Postgres Pro Enterprise 13
Редакции и возможности
13
Авторские права
© Postgres Professional, 2023 год.
Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев
Использование материалов курса
Некоммерческое использование материалов курса (презентации,
демонстрации) разрешается без ограничений. Коммерческое
использование возможно только с письменного разрешения компании
Postgres Professional. Запрещается внесение изменений в материалы
курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу:
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за
любые повреждения и убытки, включая потерю дохода, нанесенные
прямым или непрямым, специальным или случайным использованием
материалов курса. Компания Postgres Professional не предоставляет
каких-либо гарантий на материалы курса. Материалы курса
предоставляются на основе принципа «как есть» и компания Postgres
Professional не обязана предоставлять сопровождение, поддержку,
обновления, расширения и изменения.
2
Темы
Продукты Postgres Professional и редакции Postgres Pro
Возможности Postgres Pro Enterprise
3
Продукты и редакции
Редакции Postgres Pro
Лицензионная политика
Другие продукты Postgres Professional
4
Редакции Postgres Pro
Standard
Certified
Enterprise
Enterprise Certified
Postgres Pro поставляется в различных редакциях.
Standard – доработанная версия базового PostgreSQL с некоторыми
дополнительными расширениями. Это основной выбор для клиентов,
которых устраивают базовые возможности, но которым необходима
техподдержка:
Enterprise – существенно доработанная версия PostgreSQL
c функциональностью, предназначенной для высоконагруженных
систем в больших компаниях:
Обе редакции имеют сертифицированные ФСТЭК версии, которые
могут применяться для хранения персональных данных и
конфиденциальной информации:
Начиная с версии 15, ОС Windows не поддерживается Postgres Pro,
но компания собирает обычный PostgreSQL под Windows. Сборка
содержит программу-установщик.
В этом курсе, если не указано иное, мы рассматриваем возможности
Postgres Pro Enterprise.
5
Лицензионная политика
Лицензирование по количеству ядер
в стоимость лицензии входит годовая техническая поддержка
редакция Standard бесплатна для образовательных учреждений
Для 1С возможно лицензирование по количеству серверов
и пользователей
Postgres Pro лицензируется по количеству ядер. В стоимость лицензии
входит один год технической поддержки.
Редакция Postgres Pro Standard может бесплатно использоваться
образовательными учреждениями.
Все редакции Postgres Pro поддерживают работу с 1С: в состав входят
все необходимые расширения (fasttrun, fulleq, mchar, online_analyze),
а ядро включает оптимизации производительности (например,
временные таблицы не требуют ввода-вывода, пока помещаются
в отведенной оперативной памяти).
При использовании Postgres Pro для работы с 1С можно выбрать
другую модель лицензирования – по количеству серверов и
пользователей.
Дополнительно в компании можно заказать услуги технической
поддержки, миграции, аудита информационных систем:
Подробную информацию по стоимости, срокам лицензии и по вопросам
предоставления услуг можно узнать, написав на sales@postgrespro.ru
6
Другие продукты
Postgres Pro Enterprise Manager
интегрированная панель управления
централизованный интерфейс мониторинга и администрирования
Postgres Pro Backup Enterprise
утилита резервного копирования и восстановления pg_probackup
(рассматривается в этом курсе)
Postgres Pro Shardman
распределенная отказоустойчивая СУБД с ACID-гарантиями
горизонтальное масштабирование по чтению и записи
Кроме СУБД Postgres Pro, компания Postgres Professional предлагает
ряд других продуктов.
Postgres Pro Enterprise Manager – интегрированная административная
панель управления для Postgres Pro Enterprise. Предоставляет
централизованный интерфейс мониторинга и управления СУБД.
Postgres Pro Backup Enterprise – утилита pg_probackup для управления
резервным копированием и восстановлением кластеров баз данных
PostgreSQL. Утилита работает с обычным PostgreSQL и со всеми
редакциями Postgres Pro, но в сочетании с Postgres Pro Enterprise
поддерживает CFS и хранение резервных копий в S3-хранилище.
Утилита входит в состав Postgres Pro Enterprise и рассматривается
в этом курсе.
Postgres Pro Shardman – распределенная отказоустойчивая СУБД на
базе PostgreSQL. Shardman не основан на Postgres Pro, но использует
многие ее возможности (сбор статистики, аудит, сжатая файловая
система).
7
Установка и миграция
Поддержка локалей ICU на уровне кластера и БД
Замена нулевого байта в COPY FROM
nul_byte_replacement_on_import
oracle_fdw
обертка сторонних данных для Oracle
orafce
популярные функции из пакетов Oracle
Тема 2. Установка,
настройка, обновление
Postgres Pro Enterprise позволяет указывать локаль провайдера ICU
при инициализации кластера и при создании базы данных. PostgreSQL
поддерживает эту возможность начиная с версии 15.
Команда COPY FROM может обрабатывать начальные нулевые байты,
которые могут появиться при выгрузке данных из других СУБД.
Поведение регулируется параметром nul_byte_replacement_on_import.
Для облегчения миграции с Oracle в Postgres Pro Enterprise добавлены
два сторонних расширения:
oracle_fdw — обертка сторонних данных для Oracle;
orafce — распространенные функции из пакетов Oracle.
8
Транзакции и сеансы
Управление транзакциями и сеансами
9
Транзакции и сеансы
64-разрядный счетчик транзакций
Автономные транзакции
Встроенный пул соединений
сохраняет контекст сеанса
Тема 3. Управление
транзакциями
32-битные идентификаторы транзакций в PostgreSQL создают
проблемы с обслуживанием переполнения счетчика транзакций.
в нагруженных системах. В Postgres Pro Enterprise используются 64-
битные идентификаторы, упрощающие администрирование.
Автономные транзакции позволяют зафиксировать или откатить часть
операторов независимо от статуса основной транзакции.
В обычном режиме работы сервера каждое подключение
обслуживается отдельным процессом, что уменьшает эффективность
совместной работы. В Postgres Pro Enterprise реализован встроенный
пул соединений, сохраняющий окружения сеансов.
10
Данные в памяти
pg_variables
переменные в памяти сеанса
in_memory
небольшие таблицы в общей памяти
Расширение pg_variables позволяет работать с переменными
различных типов в памяти сеанса. Расширение несовместимо с пулом
соединений, включая встроенный пул Postgres Pro.
С помощью расширения in_memory можно размещать небольшие
таблицы в общей памяти сервера. Работа с таблицей происходит
с помощью обертки сторонних данных.
11
Сеансы и подключения
pgbouncer — сторонний пул соединений
Параметры libpq для подключения к разным серверам
hostorder, failover_timeout
Отключение сеансов и переподключение
idle_session_timeout, reusepass
Функции для изменения параметров других сеансов
pg_backend_set_config, pg_backend_load_library
Помимо встроенного пула соединений, в Postgres Pro включен
сторонний пул соединений pgbouncer. Работа с pgbouncer с точки
зрения разработчика приложений рассматривается в курсе DEV2.
Доработанный протокол libpq позволяет распределять сеансы по
нескольким серверам:
hostorder — порядок подключения к серверам (sequential/random);
failover_timeout — максимальное время для циклического
переподключения к узлам, указанным в строке соединения.
Два новых конфигурационных параметра:
idle_session_timeout — завершает любые сеансы, простаивающие
дольше заданного времени вне открытой транзакции;
reusepass разрешается ли использовать запрошенный пароль при
повторном установлении подключения (запрет автоматического
переподключения).
Добавлены функции pg_backend_set_config и pg_backend_load_library,
позволяющие менять параметры других сеансов и загружать в них
библиотеки.
12
Приоритизация ресурсов
Приоритеты сеансов в отношении ресурсов
session_cpu_weight — использование процессора
session_ioread_weight — объем чтения
session_iowrite_weight — объем записи
Фоновый процесс собирает статистику использования
ресурсов сеансами
usage_tracking_interval = 0 — интервал сбора
В высоконагруженных системах возникает потребность неравномерного
распределения ограниченных ресурсов между сеансами. В обычной
версии PostgreSQL такого механизма нет.
В Postgres Pro Enterprise можно назначить сеансам приоритеты
в отношении трех видов ресурсов:
использование процессора;
объем чтения (страницы локального и общего кешей);
объем записи (страницы локального и общего кешей).
Использование ресурсов процессами определяется на основе
статистики, собираемой отдельным фоновым рабочим процессом.
Интервал сбора статистики задается параметром
usage_tracking_interval. По умолчанию его значение равно 0, при этом
статистика не собирается и приоритизация отключена.
13
Хранение данных
Возможности, связанные с хранением данных в файлах
14
Сжатая файловая система
CFS — Compressed File System
включается для отдельных табличных пространств
позволяет сжать данные в несколько раз
сокращает объем дискового ввода-вывода
измененные страницы записываются последовательно
Тема 4. CFS – сжатая
файловая система
Использование сжатой файловой системы (Compressed File System,
CFS) позволяет сократить объем дискового ввода-вывода за счет
хранения сжатых блоков данных и улучшить кучность хранения за счет
последовательной записи сжатых блоков в конец файла на диске.
Механизм CFS включается на уровне отдельных табличных
пространств.
Как правило, сжатие позволяет уменьшить объем хранимых данных
в несколько раз.
15
Хранение данных
TOAST для системного каталога
для столбцов со списками управления доступом
pg_transfer
быстрое перемещение таблиц между серверами
pg_repack
устранение раздувания таблиц и индексов
Таблицы системного каталога, содержащие потенциально длинные
списки управления доступом (Access Control List), такие как pg_class
и pg_attribute, могут использовать TOAST.
С помощью расширения pg_transfer можно специальным образом
подготовить таблицу, содержащую много данных, и затем быстро
переместить ее на другой экземпляр Postgres Pro простым
копированием файлов данных. Расширение выполняет необходимые
для этого корректировки системного каталога.
В Postgres Pro Enterprise включена сторонняя утилита pg_repack,
которая позволяет избавиться от раздувания таблиц и индексов без
установки исключительной блокировки на все время работы, как того
требует команда VACUUM FULL.
16
Повреждения данных
amcheck
контроль целостности
добавлена проверка уникальности индексов
pg_filedump
низкоуровневый просмотр файлов данных
Просмотр всех версий строк
функция pg_snapshot_any для отключения правил видимости
Postgres Pro Enterprise включает дополнительные средства для
контроля целостности, отладки и исследования поврежденных данных.
Штатное расширение amcheck, позволяющее проверять целостность
данных, доработано для проверки ограничений уникальности
в B-деревьях.
Утилита pg_filedump выводит содержимое файлов таблиц и индексов,
а также управляющего файла в отформатированном виде. Это может
быть полезно для исправления поврежденных данных.
Функция pg_snapshot_any выводит все версии строк таблицы, отключая
правила видимости.
17
Запросы
Выполнение и оптимизация запросов