# Занятие 01: Установка и сопровождение / Редакции и возможности

> Исходная страница в нативном Markdown: Установка и сопровождение / Редакции и возможности

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

<!-- Generated by scripts/generate_skeleton.py. -->

> [!NOTE]
> Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета.
> **HTML source:** [pgpro_01_features.html](https://edu.postgrespro.ru/16/pgpro-16/pgpro_01_features.html)
> **Archive:** [PGPRO-handouts-16.zip](https://edu.postgrespro.ru/16/PGPRO-handouts-16.zip)
> **Страниц PDF:** 34

## Page 1: Установка и сопровождение / Редакции и возможности {#source-page-001}

### Авторские права

© Postgres Professional, 2023–2026 Авторы: Алексей Береснев, Илья Баштанов, Павел Толмачев, Игорь Гнатюк Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
### Использование материалов курса

Некоммерческое использование материалов курса (презентации, демонстрации) разрешается без ограничений. Коммерческое использование возможно только с письменного разрешения компании Postgres Professional. Запрещается внесение изменений в материалы курса.
### Обратная связь

Отзывы, замечания и предложения направляйте по адресу: edu@postgrespro.ru
### Отказ от ответственности

Компания Postgres Professional не несет никакой ответственности за любые повреждения и убытки, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием материалов курса. Компания Postgres Professional не предоставляет каких-либо гарантий на материалы курса. Материалы курса предоставляются на основе принципа «как есть» и компания Postgres Professional не обязана предоставлять сопровождение, поддержку, обновления, расширения и изменения.

## Page 2: Темы {#source-page-002}

- Продукты Postgres Professional и редакции Postgres Pro
- Возможности Postgres Pro Enterprise

## Page 3: Продукты и редакции {#source-page-003}

**Редакции Postgres Pro**
- Лицензионная политика
- Другие продукты Postgres Professional

## Page 4: Редакции Postgres Pro {#source-page-004}

**Standard**
- Certified
- Enterprise
- Enterprise Certified

### Комментарии преподавателя

Postgres Pro поставляется в различных редакциях.

Standard — доработанная версия базового PostgreSQL с рядом дополнительных расширений. Подходит для клиентов, которых устраивают базовые возможности, но которым необходимо решение, зарегистрированное в Реестре российского программного обеспечения, а также техподдержка:

<https://postgrespro.ru/products/postgrespro/standard>

Enterprise — существенно доработанная версия PostgreSQL c функциональностью, предназначенной для высоконагруженных систем в больших компаниях:

<https://postgrespro.ru/products/postgrespro/enterprise>

Обе редакции имеют сертифицированные ФСТЭК версии, которые могут применяться на объектах критической информационной инфраструктуры, в государственных информационных системах, а также в системах хранения и обработки персональных данных и конфиденциальной информации:

<https://postgrespro.ru/products/postgrespro/certified>

<https://postgrespro.ru/products/postgrespro/enterprisecertified>

Начиная с версии 15, ОС Windows не поддерживается Postgres Pro, но компания собирает дистрибутив обычного PostgreSQL под Windows.

<https://postgrespro.ru/windows>

В этом курсе, если не указано иное, мы рассматриваем возможности Postgres Pro Enterprise.

## Page 5: Лицензионная политика {#source-page-005}

**Лицензирование по количеству ядер**
  - в стоимость лицензии входит годовая техническая поддержка
  - бесплатные академические лицензии для образовательных организаций
- Для 1С возможно лицензирование по количеству серверов и пользователей

### Комментарии преподавателя

Postgres Pro лицензируется по количеству ядер. В стоимость лицензии входит один год технической поддержки.

Все редакции Postgres Pro поддерживают работу с 1С: в состав входят все необходимые расширения (fasttrun, fulleq, mchar, online\_analyze), а ядро включает оптимизации производительности (например, временные таблицы не требуют ввода-вывода, пока помещаются в отведенной оперативной памяти).

При использовании Postgres Pro для работы с 1С можно выбрать другую модель лицензирования — по количеству серверов и пользователей.

<https://postgrespro.ru/licensing>

Образовательным организациям бесплатно предоставляются академические лицензии на Postgres Pro Standard и Postgres Pro Enterprise. Такие лицензии позволяют использовать СУБД не только для обучения, научных исследований и студенческих конкурсов, но и для административных задач. Они не ограничены по времени, но не включают техническую поддержку.

<https://postgrespro.ru/education/university>

Дополнительно в компании можно заказать услуги технической поддержки, миграции, аудита информационных систем:

<https://postgrespro.ru/services>

Подробную информацию по стоимости, срокам лицензии и по вопросам предоставления услуг можно получить, написав на sales@postgrespro.ru

## Page 6: Другие продукты {#source-page-006}

**Postgres Pro Enterprise Manager**
  - Тема 2. Postgres Pro
  - Enterprise Manager
  - интегрированная панель управления
  - централизованный интерфейс мониторинга и администрирования
- Postgres Pro Backup Enterprise
  - Темы 18–20
  - утилита резервного копирования и восстановления pg\_probackup
- Postgres Pro Shardman
  - распределенная отказоустойчивая СУБД с ACID-гарантиями
  - горизонтальное масштабирование по чтению и записи

### Комментарии преподавателя

Кроме СУБД Postgres Pro, компания Postgres Professional предлагает ряд других продуктов.

Postgres Pro Enterprise Manager — интегрированная административная панель управления для Postgres Pro Enterprise. Предоставляет централизованный интерфейс мониторинга и управления СУБД.

<https://postgrespro.ru/products/PPEM>

Postgres Pro Backup Enterprise — утилита pg\_probackup для управления резервным копированием и восстановлением кластеров баз данных PostgreSQL. Утилита работает с обычным PostgreSQL и со всеми редакциями Postgres Pro, но в сочетании с Postgres Pro Enterprise поддерживает CFS и размещение резервных копий в S3-хранилище.

Утилита входит в состав Postgres Pro Enterprise и рассматривается в этом курсе.

<https://postgrespro.ru/products/pg\_probackup>

Postgres Pro Shardman — распределенная объектно-реляционная СУБД на основе PostgreSQL c дополнительными изменениями и расширениями. Shardman совместим с Postgres Pro Enterprise и использует многие ее возможности (в том числе 64-битные номера транзакций, сбор статистики, аудит, CFS, обеспечение высокой доступности другие).

<https://postgrespro.ru/products/shardman>

## Page 7: Установка и миграция {#source-page-007}

**Автоматическая настройка параметров при инициализации кластера**
  - Тема 3.
  - Установка, настройка,
  - обновление
  - запуск pgpro\_tune по умолчанию
- Упрощение миграции с Oracle
  - Тема 4. Миграция
  - реализация пакетов
  - oracle\_fdw — обертка сторонних данных
  - orafce — популярные функции системных пакетов Oracle
  - ora2pgpro — автоматизация миграции

### Комментарии преподавателя

При инициализации кластера Postgres Pro Enterprise по умолчанию выполняется его дополнительная настройка, зависящая от конфигурации оборудования. Для этого запускается утилита pgpro\_tune, которая собирает информацию о системе и дописывает в файл конфигурации необходимые параметры.

<https://postgrespro.ru/docs/enterprise/16/app-pgpro-tune>

Для облегчения миграции с Oracle в Postgres Pro Enterprise реализован функционал пакетов Oracle и добавлены расширения:

● oracle\_fdw — обертка сторонних данных для Oracle;

● orafce — распространенные функции из пакетов Oracle;

● ora2pgpro — утилита конвертации кода и переноса объектов из Oracle.

<https://postgrespro.ru/docs/enterprise/16/pgpro-migration-tools>

## Page 8: Планировщик заданий {#source-page-008}

**pgpro\\\_scheduler — встроенный планировщик заданий**
  - разовые и планируемые задания
  - позволяет обойтись без средств операционной системы
  - Тема 5. Планировщик
  - заданий

### Комментарии преподавателя

Расширение pgpro\_scheduler — интегрированный в Postgres Pro Enterprise планировщик заданий. С его помощью можно задавать сложные расписания, динамически вычислять время следующего запуска для повторяющихся заданий, выполнять SQL-команды задания в одной или в нескольких последовательных транзакциях, назначать задания для немедленного или отложенного однократного выполнения одновременно с обычными планируемыми заданиями.

<https://postgrespro.ru/docs/enterprise/16/pgpro-scheduler>

## Page 9: Данные {#source-page-009}

**Сжатая файловая система**
- Расширения и утилиты для данных
- Диагностика и исправление повреждений данных
- Работа с данными в памяти

## Page 10: Сжатая файловая система {#source-page-010}

**CFS — Compressed File System**
  - включается для отдельных табличных пространств
  - позволяет сжать данные в несколько раз
  - сокращает объем дискового ввода-вывода
  - измененные страницы записываются последовательно
  - Тема 6. CFS — сжатая
  - файловая система

### Комментарии преподавателя

Использование сжатой файловой системы (Compressed File System, CFS) позволяет сократить объем дискового ввода-вывода за счет хранения сжатых блоков данных и улучшить кучность хранения за счет последовательной записи сжатых блоков в конец файла на диске.

Механизм CFS включается на уровне отдельных табличных пространств.

Как правило, сжатие позволяет уменьшить объем хранимых данных в несколько раз.

<https://postgrespro.ru/docs/enterprise/16/cfs>

## Page 11: Хранение данных {#source-page-011}

**TOAST для системного каталога**
  - для столбцов со списками управления доступом
- pg\_transfer
  - быстрое перемещение таблиц между серверами
- pg\_repack
  - устранение раздувания таблиц и индексов

### Комментарии преподавателя

Таблицы системного каталога, содержащие потенциально длинные списки управления доступом (Access Control List), такие как pg\_class и pg\_attribute, могут использовать TOAST.

С помощью расширения pg\_transfer можно специальным образом подготовить таблицу, содержащую много данных, и затем быстро переместить ее на другой экземпляр Postgres Pro простым копированием файлов данных. Расширение выполняет необходимые для этого корректировки системного каталога.

<https://postgrespro.ru/docs/enterprise/16/pgtransfer>

В Postgres Pro Enterprise включена сторонняя утилита pg\_repack, которая позволяет избавиться от раздувания таблиц и индексов без установки исключительной блокировки на все время работы, как того требует команда VACUUM FULL.

<https://postgrespro.ru/docs/enterprise/16/app-pgrepack>

## Page 12: Повреждения данных {#source-page-012}

**amcheck**
  - контроль целостности
  - добавлена проверка уникальности индексов
- pg\_filedump
  - низкоуровневый просмотр файлов данных
- Просмотр всех версий строк
  - функция pg\_snapshot\_any для отключения правил видимости

### Комментарии преподавателя

Postgres Pro Enterprise включает дополнительные средства для контроля целостности, отладки и исследования поврежденных данных.

Штатное расширение amcheck, позволяющее проверять целостность данных, доработано для проверки ограничений уникальности в B-деревьях.

<https://postgrespro.ru/docs/enterprise/16/amcheck>

Утилита pg\_filedump выводит содержимое файлов таблиц и индексов, а также управляющего файла в отформатированном виде. Это может быть полезно для исправления поврежденных данных.

<https://postgrespro.ru/docs/enterprise/16/pg-filedump>

Функция pg\_snapshot\_any выводит все версии строк таблицы, отключая правила видимости.

<https://postgrespro.ru/docs/enterprise/16/functions-admin#FUNCTIONS-DE> BUGGING-TABLE

## Page 13: Данные в памяти {#source-page-013}

**pg\\\_variables**
  - переменные в памяти сеанса
- in\_memory
  - небольшие таблицы в общей памяти
  - Тема 7.
  - Транзакции
  - и сеансы

### Комментарии преподавателя

Расширение pg\_variables позволяет работать с переменными различных типов (скалярными, массивами и коллекциями) в памяти сеанса.

<https://postgrespro.ru/docs/enterprise/16/pg-variables>

С помощью расширения in\_memory можно размещать небольшие таблицы в общей памяти сервера. Работа с таблицей происходит с помощью обертки сторонних данных.

<https://postgrespro.ru/docs/enterprise/16/in-memory>

Оба расширения можно рассматривать как альтернативу временным таблицам.

## Page 14: Производительность {#source-page-014}

**Управление транзакциями и сеансами**
- Выполнение и оптимизация запросов
- Анализ нагрузки и мониторинг

## Page 15: Транзакции и сеансы {#source-page-015}

**64-разрядный счетчик транзакций**
- Автономные транзакции
- Встроенный пул соединений
  - сохраняет контекст сеанса
  - Тема 7.
  - Транзакции
  - и сеансы

### Комментарии преподавателя

32-битные идентификаторы транзакций в PostgreSQL создают проблемы с обслуживанием переполнения счетчика транзакций. в нагруженных системах. В Postgres Pro Enterprise используются 64-битные идентификаторы, упрощающие администрирование.

Автономные транзакции позволяют зафиксировать или откатить часть операторов независимо от статуса основной транзакции.

В обычном режиме работы сервера каждое подключение обслуживается отдельным процессом, что уменьшает эффективность совместной работы. В Postgres Pro Enterprise реализован встроенный пул соединений, сохраняющий окружения сеансов.

## Page 16: Сеансы и подключения {#source-page-016}

**pgbouncer — сторонний пул соединений**
- Параметры libpq для подключения к разным серверам
  - hostorder, failover\_timeout
- Отключение сеансов и переподключение
  - reusepass
- Функции для изменения параметров других сеансов
  - pg\_backend\_set\_config, pg\_backend\_load\_library

### Комментарии преподавателя

Помимо встроенного пула соединений, в Postgres Pro включен сторонний пул соединений pgbouncer. Работа с pgbouncer с точки зрения разработчика приложений рассматривается в курсе DEV2.

Доработанный протокол libpq позволяет распределять сеансы по нескольким серверам:

● hostorder — порядок подключения к серверам (sequential/random);

● failover\_timeout — максимальное время для циклического переподключения к узлам, указанным в строке соединения.

<https://postgrespro.ru/docs/enterprise/16/libpq-connect>

Дополнительный конфигурационный параметр reusepass — разрешается ли использовать запрошенный пароль при повторном установлении подключения (запрет автоматического переподключения).

Добавлены функции pg\_backend\_set\_config и pg\_backend\_load\_library, позволяющие менять параметры других сеансов и загружать в них библиотеки.

<https://postgrespro.ru/docs/enterprise/16/functions-admin#FUNCTIONS-AD> MIN-SET

## Page 17: Приоритизация ресурсов {#source-page-017}

**pgpro\\\_rp — расширение для приоритизации ресурсов**
  - использование процессора
  - объем читаемых данных
  - объем записываемых данных
- Сеансам можно назначать план приоритизации ресурсов
  - с помощью триггера входа во время создания сеанса
  - с помощью вызова функции
- Планы приоритизации могут меняться в зависимости от времени суток, дней недели и других факторов

### Комментарии преподавателя

В высоконагруженных системах возникает потребность неравномерного распределения ограниченных ресурсов между сеансами. В обычной версии PostgreSQL такого механизма нет.

В Postgres Pro Enterprise добавлено расширение pgpro\_rp, с помощью которого можно назначить сеансам приоритеты в отношении трех видов ресурсов:

● использование процессора;

● объем чтения (страницы локального и общего кешей);

● объем записи (страницы локального и общего кешей).

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

Планы могут быть как постоянными, так и зависеть от времени суток, дней недели и других подобных факторов.

<https://postgrespro.ru/docs/enterprise/16/pgpro-rp>

Расширение pgpro\_rp в своей работе использует механизм приоритизации ресурсов, добавленный в ядро Postgres Pro Enterprise

<https://postgrespro.ru/docs/enterprise/16/kernel-resources#RESOURCE-PRI> ORITIZATION

## Page 18: Оптимизация запросов {#source-page-018}

**dump\\\_stat — перенос статистики планировщика**
- pg\_query\_state — состояние выполняющегося запроса
- pg\_hint\_plan — указания оптимизатору
- plantuner — запрет определенных индексов
  - Тема 8.
  - Оптимизация
  - запросов

### Комментарии преподавателя

Расширение dump\_stat позволяет после восстановления из логической копии обойтись без выполнения команды ANALYZE для всего кластера, что для больших БД может значительно сократить время простоя.

<https://postgrespro.ru/docs/enterprise/16/dump-stat>

Расширение pg\_query\_state позволяет узнать текущее состояние выполнения запросов.

<https://postgrespro.ru/docs/enterprise/16/pg-query-state>

Расширение pg\_hint\_plan позволяет управлять планом выполнения запроса с помощью специальных указаний.

<https://postgrespro.ru/docs/enterprise/16/pg-hint-plan>

Расширение plantuner позволяет скрывать определенные индексы от планировщика, не удаляя их.

<https://postgrespro.ru/docs/enterprise/16/plantuner>

## Page 19: Оптимизация запросов {#source-page-019}

**AQO — адаптивная оптимизация запросов**
- накопление статистики выполнений и коррекция прогноза кардинальности Перепланирование запросов в реальном времени
  - прерывание выполнения запроса и запуск повторного планирования
- pgpro\_multiplan — сохранение планов запросов
  - использование планов без повторной оптимизации идентичных запросов
  - Тема 9. Адаптивная
  - Тема 11. Сохранение
  - оптимизация
  - планов запросов
  - Тема 10.
  - Перепланирование

### Комментарии преподавателя

Расширение AQO (Adaptive Query Optimization) используется для адаптивной оптимизации запросов за счет коррекции прогноза кардинальности с учетом накопленной статистики выполнения запросов.

<https://postgrespro.ru/docs/enterprise/16/aqo>

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

<https://postgrespro.ru/docs/enterprise/16/realtime-query-replanning>

Расширение pgpro\_multiplan позволяет сохранять планы запросов и использовать их для идентичных запросов без повторного планирования.

<https://postgrespro.ru/docs/enterprise/16/pgpro-multiplan>

## Page 20: Планировщик запросов {#source-page-020}

**Удаление замкнутых соединений из планов**
  - enable\_self\_join\_removal
- Оптимизированы планы с пустыми узлами Materialize
- Уточнение стоимости последовательного сканирования
  - seq\_scan\_startup\_cost\_first\_row = off
- Уточнение селективности соединений по нескольким условиям при наличии расширенной статистики
  - enable\_compound\_index\_stats = on
- Уменьшено потребление памяти планировщиком в запросах с большими массивами

### Комментарии преподавателя

Имеется возможность удаления замкнутых соединений из планов запросов, что может увеличить скорость выполнения (параметр enable\_self\_join\_removal). Полезно для систем с автоматически генерируемыми запросами.

<https://postgrespro.ru/docs/enterprise/16/runtime-config-query#GUC-ENABL> E-SELF-JOIN-REMOVAL

Улучшена производительность в случаях, когда в плане возникает много пустых узлов Materialize, которые ничего не возвращают.

Параметр seq\_scan\_startup\_cost\_first\_row увеличивает начальную стоимость последовательного сканирования. В обычном PostgreSQL эта величина всегда равную нулю, за счет чего планировщик может иногда предпочесть последовательное сканирование доступу по индексу для получения одной строки по первичному ключу.

<https://postgrespro.ru/docs/enterprise/16/runtime-config-query#GUC-SEQ-S> CAN-STARTUP-COST-FIRST-ROW

При включенном параметре enable\_compound\_index\_stats оптимизатор использует составные индексы для уточнения оценки селективности соединения по нескольким атрибутам, не составляющим внешний ключ (в PostgreSQL в этом случае перемножаются селективности по отдельным колонкам).

Добавлена оптимизация, которая уменьшает потребление памяти планировщиком на запросах, содержащих большие массивы (например, IN для проверки вхождения значения в массив).

## Page 21: Выполнение запросов {#source-page-021}

**Управление объемом кеша для подготовленных операторов**
  - plan\_cache\_lru\_memsize, plan\_cache\_lru\_size
- Режим автоподготовки операторов
  - autoprepare\_threshold, autoprepare\_limit, autoprepare\_memory\_limit
- Поиск ближайших соседей для B-tree
- Ускорено сканирование только индекса для больших таблиц
- vops — векторные операции для OLAP-запросов

### Комментарии преподавателя

Параметрами plan\_cache\_lru\_memsize и plan\_cache\_lru\_size можно ограничить объем памяти, занимаемый подготовленными операторами. Это может помочь, если приложение создает слишком много подготовленных операторов.

<https://postgrespro.ru/docs/enterprise/16/runtime-config-resource#GUC-PLA> N-CACHE-LRU-MEMSIZE

Добавлен режим автоподготовки операторов (отключен по умолчанию), в котором часто используемые операторы неявно подготавливаются. Может давать преимущество в тех случаях, когда явные команды PREPARE не работают, например, когда применяется pgbouncer.

<https://postgrespro.ru/docs/enterprise/16/autoprepare>

- В индексах B-tree реализована поддержка алгоритма k-NN – поиска
- ближайших соседей – при сортировке по расстоянию. В обычном
- PostgreSQL для этого приходится пользоваться расширением btree\_gist
- так сортировка работает гораздо медленнее.

<https://postgrespro.ru/docs/enterprise/16/k-nn-search>

Увеличен размер кеша карты видимости, что позволяет сканированию только индекса быстрее работать с таблицами больше 256 Мбайт.

Экспериментальное расширение vops (vectorized operations) позволяет ускорять запросы OLAP с фильтрацией и агрегированием благодаря колоночному хранению внутри страниц («паркет») и использованию векторных операций.

<https://postgrespro.ru/docs/enterprise/16/vops>

## Page 22: Блокировки {#source-page-022}

**Оптимизация механизма проверки взаимоблокировок**
- Очередь для разделяемых легких блокировок
  - lwlock\_shared\_limit = 0
- Разделение таблицы блокировок на секции
  - log2\_num\_lock\_partitions = 4
- Уменьшена конкуренция при расширении файлов B-tree

### Комментарии преподавателя

Одновременная проверка ситуации взаимоблокировки многими процессами (что может произойти на нагруженных системах с большим количеством ядер) вызывает замедление работы сервера вплоть до полной остановки. В Postgres Pro проверка ограничена одним процессом в один момент времени.

Для улучшения работы с легкими блокировками имеется параметр lwlock\_shared\_limit. Он задает количество разделяемых блокировок, по достижении которого запускается «справедливый» режим ожидания — последующие блокировки добавляются в очередь. В этом случае устраняется возможность бесконечного откладывания исключительных блокировок, что важно при большой конкуренции за ресурс.

<https://postgrespro.ru/docs/enterprise/16/runtime-config-locks#GUC-LWLOC> K-SHARED-LIMIT

Для повышения параллелизма таблица блокировок разделяется на несколько секций. Количество секций всегда является степенью двойки, поэтому задается показатель степени. В PostgreSQL он всегда равен 4, то есть таблица делится на 16 секций. В Postgres Pro Enterprise показатель можно задать параметром log2\_num\_lock\_partitions, если при большой конкуренции значения по умолчанию не хватает.

<https://postgrespro.ru/docs/enterprise/16/runtime-config-locks#GUC-LOG2-NUM-LOCK-PARTITIONS>

Уменьшена конкуренция при расширении файлов B-tree: к файлу добавляется сразу несколько страниц, как при расширении таблицы.

## Page 23: Буферный кеш {#source-page-023}

**Более эффективная работа с горячими страницами индексов**
- Оптимизация для NUMA-архитектур
- Уменьшена конкуренция за хеш-таблицу
  - 1024 отдельно блокируемых секций

### Комментарии преподавателя

Улучшен менеджер буферного кеша:

● устранено узкое место, возникающее при обращении к горячим страницам индексов при высокой конкуренции;

● изменена внутренняя реализация хеш-таблицы буферного кеша для более эффективной работы, в том числе на NUMA-архитектурах;

● сама хеш-таблица буферного кеша разделена на 1024 секции (в PostgreSQL — 128) для снижения конкуренции на многоядерных системах.

## Page 24: Поиск в тексте и в json {#source-page-024}

**Метод доступа RUM**
  - фразовый поиск и ранжирование
- pg\_tsparser — альтернативный анализатор
- Hunspell — словари для ряда языков
- shared\_ispell — размещение словарей в общей памяти JsQuery — язык запросов к данным jsonb
  - поиск во вложенных объектах и массивах
  - операторы сравнения с индексной поддержкой

### Комментарии преподавателя

Для улучшения полнотекстового поиска добавлен метод доступа RUM, который похож на GIN, но поддерживает фразовый поиск и выдачу ранжированных результатов.

<https://postgrespro.ru/docs/enterprise/16/rum>

Расширение pg\_tsparser изменяет стандартную стратегию разбора текста для слов, включающих подчеркивания, цифры и буквы, а также для слов, разделенных знаком минуса. Оно удобно, в частности, для поиска в коде.

<https://postgrespro.ru/docs/enterprise/16/pg-tsparser>

Расширение Hunspell предоставляет возможность использовать популярные словари Hunspell для разных языков.

<https://postgrespro.ru/docs/enterprise/16/hunspell-dict>

В отличии от стандартной реализации словарей ispell, расширение shared\_ispell позволяет разместить словарь в общей памяти.

<https://postgrespro.ru/docs/enterprise/16/shared-ispell>

Расширение JsQuery предоставляет язык запросов для поиска в значениях типа jsonb. С добавлением в PostgreSQL поддержки стандарта SQL/JSON потеряло актуальность, но сохраняется для совместимости.

<https://postgrespro.ru/docs/enterprise/16/jsquery>

## Page 25: Анализ нагрузки {#source-page-025}

**pgpro\\\_stats — статистика выполнения**
  - Тема 12. Анализ
  - производительности
  - развитие pg\_stat\_statements
- pgpro\_pwr — выявление ресурсоемких операций: выборки и отчеты
  - Тема 13. Отчеты по
  - нагрузке pgpro\_pwr
  - развитие pg\_profile

### Комментарии преподавателя

Расширение pgpro\_stats позволяет собрать статистику планирования и выполнения SQL-операторов. Основано на pg\_stat\_statements.

<https://postgrespro.ru/docs/enterprise/16/pgpro-stats>

Pgpro\_pwr накапливает статистические выборки (полученные на основе других расширений и результатов работы сборщика статистики), анализирует их и строит отчеты о нагрузке.

<https://postgrespro.ru/docs/enterprise/16/pgpro-pwr>

## Page 26: Анализ нагрузки {#source-page-026}

**pg\\\_wait\\\_sampling — семплирование событий ожидания**
- auto\_explain — добавлено время планирования
- pg\_waldump — добавлен вывод времени
- Определение объема сгенерированных WAL-записей
- pgBadger — поддержка формата журнала Postgres Pro
- Mamonsu — агент мониторинга для Zabbix
- pgbench — учет ошибок сериализации и взаимоблокировок

### Комментарии преподавателя

Расширение pg\_wait\_sampling семплирует события ожидания. Расширение подробно рассматривается в курсе DBA2.

<https://postgrespro.ru/docs/enterprise/16/pg-wait-sampling>

В auto\_explain добавлено отображение длительности планирования.

<https://postgrespro.ru/docs/enterprise/16/auto-explain>

В pg\_waldump добавлен вывод времени для различных типов журнальных записей.

<https://postgrespro.ru/docs/enterprise/16/pgwaldump>

Представление pgpro\_stat\_wal\_activity отображает объем сгенерированных каждым процессом записей WAL.

<https://postgrespro.ru/docs/enterprise/16/monitoring-stats#MONITORING-P> GPRO-STAT-WAL-ACTIVITY-VIEW

Добавлено стороннее расширение pgBadger, адаптированное для корректной работы с Postgres Pro.

Добавлен Mamonsu — агент мониторинга Postgres Pro для Zabbix:

<https://postgrespro.ru/docs/enterprise/16/mamonsu>

В pgbench скорректирован учет ошибок сериализации и взаимоблокировок.

<https://postgrespro.ru/docs/enterprise/16/pgbench>

## Page 27: Безопасность {#source-page-027}

**Профили, аудит, данные**
- Сертификация ФСТЭК

## Page 28: Профили, аудит, данные {#source-page-028}

**passwordcheck — запрет простых паролей**
  - Тема 14. Профили
- Профили пользователя
  - пользователей
  - парольные политики и ограничения
- pg\_proaudit — аудит действий пользователей
  - Тема 15. Аудит
- Защищенная схема — ограничение прав администраторов
  - Тема 16.
  - Защищенная схема
- Анонимизация данных — изменение представления исходного набора данных
  - Тема 17.
  - Анонимизация
  - данных

### Комментарии преподавателя

Расширение passwordcheck запрещает использование простых паролей.

<https://postgrespro.ru/docs/enterprise/16/passwordcheck>

Профили пользователей ограничивают использование системы, в частности, реализуют парольные политики.

<https://postgrespro.ru/docs/enterprise/16/sql-createprofile>

Расширение pg\_proaudit позволяет проводить аудит действий пользователей.

<https://postgrespro.ru/docs/enterprise/16/pg-proaudit>

Рекомендуемые организационно-технические мероприятия по разграничению прав между привилегированными пользователями СУБД позволят повысить безопасность работы с Postgres Pro.

<https://postgrespro.ru/docs/enterprise/16/sod-separation-of-duties>

Разграничение прав доступа в ряде случаев не сможет обеспечить полную безопасность данных. В таких ситуациях можно использовать анонимизацию — сохранение конфиденциальности путем изменения представления исходного набора данных.

<https://postgrespro.ru/docs/enterprise/16/pgpro-anonymizer>

## Page 29: Сертификация ФСТЭК {#source-page-029}

**Очистка удаленных данных**
  - на диске и в оперативной памяти
- Контроль целостности файлов

### Комментарии преподавателя

Работа с персональными данными и конфиденциальной информацией требует использования сертифицированной редакции Postgres Pro Enterprise Certified. Для этой редакции сделано несколько изменений, которые отсутствуют и в несертифицированной Postgres Pro Enterprise.

Чтобы не допустить возможности восстановления удаленных данных, освобождаемые области памяти автоматически заполняются нулевыми байтами — как на диске, так и в оперативной памяти.

<https://postgrespro.ru/docs/enterprise/16/memory-purge-cert>

Утилита pg\_integrity\_check проверяет контрольные суммы отслеживаемых файлов — исполняемых, конфигурационных, таблиц системного каталога — и блокирует доступ пользователей к базе данных в случае обнаружения несанкционированных изменений.

<https://postgrespro.ru/docs/enterprise/16/integrity-checks>

## Page 30: Резервное копирование {#source-page-030}

**pg\\\_probackup — система резервного копирования и восстановления**
  - централизованный каталог копий
  - политики хранения
  - инкрементальное копирование
  - многопоточность
- ptrack
  - механизм для получения измененных страниц данных
  - Темы 18, 19 и 20.
  - Резервное копирование

### Комментарии преподавателя

pg\_probackup — система резервного копирования и восстановления кластеров баз данных PostgreSQL и Postgres Pro.

Утилита поддерживает каталог резервных копий, позволяя настраивать политики хранения.

Реализованы различные виды инкрементального копирования, многопоточность и другие возможности.

Механизм PTRACK позволяет в определенных случаях значительно ускорить инкрементальное копирование, сообщая утилите номера блоков данных, измененных после предыдущего копирования.

<https://postgrespro.ru/docs/enterprise/16/app-pgprobackup>

## Page 31: Отказоустойчивые решения {#source-page-031}

**Доработки физической репликации**
- Синхронный кластер multimaster
- Отказоустойчивый кластер BiHA

## Page 32: Репликация {#source-page-032}

**Нестрогая синхронная репликация**
  - ограничение отставания реплики
  - synchronous\_standby\_gap = 0
- Автоматическое исправление поврежденных страниц
  - страницы запрашиваются с резервного сервера
  - page\_repair = off
- Восстановление поврежденных записей WAL
  - walsender может прочитать запись из буфера в оперативной памяти
  - wal\_sender\_check\_crc = off

### Комментарии преподавателя

Нестрогая синхронная репликация позволяет временно перевести синхронную реплику в асинхронный режим при значительном отставании.

<https://postgrespro.ru/docs/enterprise/16/runtime-config-replication#GUC-SY> NCHRONOUS-STANDBY-GAP

При чтении страницы с неверной контрольной суммой основной сервер может запросить эту страницу с резервного сервера и автоматически восстановить ее.

<https://postgrespro.ru/docs/enterprise/16/warm-standby#REPAIR-PAGE-FR> OM-STANDBY

Процесс walsender может восстановить поврежденную запись WAL из буферов оперативной памяти.

<https://postgrespro.ru/docs/enterprise/16/wal-restoration>

## Page 33: Отказоустойчивость {#source-page-033}

**multimaster — синхронный кластер без разделения ресурсов**
  - все узлы ведущие
  - распределенные транзакции
  - отказоустойчивость и высокая доступность
  - масштабирование читающей нагрузки
  - Тема 21.
  - Кластер multimaster
- Отказоустойчивый кластер BiHA
  - Тема 22.
  - Кластер BiHA
  - кластер с физической репликацией
  - отказоустойчивость и высокая доступность
  - масштабирование читающей нагрузки

### Комментарии преподавателя

Расширение multimaster позволяет настроить синхронный кластер, в котором любой узел может принимать запросы как на чтение, так и на запись.

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

<https://postgrespro.ru/docs/enterprise/16/multimaster>

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

<https://postgrespro.ru/docs/enterprise/16/biha>

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

Также оба расширения обеспечивают масштабируемость читающих транзакций.

## Page 34: Итоги {#source-page-034}

**Postgres Pro Enterprise содержит разнообразные дополнительные возможности**
  - изменения в коде ядра PostgreSQL
  - дополнительные расширения
  - улучшения сторонних расширений
- Основные возможности детально рассматриваются в курсе
