Перейти к содержимому

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

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

Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета. HTML source: pgpro_01_features.html Archive: PGPRO-handouts-16.zip Страниц PDF: 34

Page 1: Установка и сопровождение / Редакции и возможности

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

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

Использование материалов курса

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

Обратная связь

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

Отказ от ответственности

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

Page 2: Темы

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

Page 3: Продукты и редакции

Редакции Postgres Pro

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

Page 4: Редакции Postgres Pro

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: Лицензионная политика

Лицензирование по количеству ядер

  • в стоимость лицензии входит годовая техническая поддержка
  • бесплатные академические лицензии для образовательных организаций
  • Для 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: Другие продукты

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: Установка и миграция

Автоматическая настройка параметров при инициализации кластера

  • Тема 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: Планировщик заданий

pgpro\_scheduler — встроенный планировщик заданий

  • разовые и планируемые задания
  • позволяет обойтись без средств операционной системы
  • Тема 5. Планировщик
  • заданий

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

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

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

Page 9: Данные

Сжатая файловая система

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

Page 10: Сжатая файловая система

CFS — Compressed File System

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

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

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

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

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

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

Page 11: Хранение данных

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: Повреждения данных

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: Данные в памяти

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: Производительность

Управление транзакциями и сеансами

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

Page 15: Транзакции и сеансы

64-разрядный счетчик транзакций

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

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

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

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

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

Page 16: Сеансы и подключения

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: Приоритизация ресурсов

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: Оптимизация запросов

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: Оптимизация запросов

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: Планировщик запросов

Удаление замкнутых соединений из планов

  • 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: Выполнение запросов

Управление объемом кеша для подготовленных операторов

  • 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: Блокировки

Оптимизация механизма проверки взаимоблокировок

  • Очередь для разделяемых легких блокировок
    • 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: Буферный кеш

Более эффективная работа с горячими страницами индексов

  • Оптимизация для NUMA-архитектур
  • Уменьшена конкуренция за хеш-таблицу
    • 1024 отдельно блокируемых секций

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

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

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

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

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

Page 24: Поиск в тексте и в json

Метод доступа 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: Анализ нагрузки

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: Анализ нагрузки

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: Безопасность

Профили, аудит, данные

  • Сертификация ФСТЭК

Page 28: Профили, аудит, данные

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: Сертификация ФСТЭК

Очистка удаленных данных

  • на диске и в оперативной памяти
  • Контроль целостности файлов

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

Работа с персональными данными и конфиденциальной информацией требует использования сертифицированной редакции 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: Резервное копирование

pg\_probackup — система резервного копирования и восстановления

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

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

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

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

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

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

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

Page 31: Отказоустойчивые решения

Доработки физической репликации

  • Синхронный кластер multimaster
  • Отказоустойчивый кластер BiHA

Page 32: Репликация

Нестрогая синхронная репликация

  • ограничение отставания реплики
  • 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: Отказоустойчивость

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: Итоги

Postgres Pro Enterprise содержит разнообразные дополнительные возможности

  • изменения в коде ядра PostgreSQL
  • дополнительные расширения
  • улучшения сторонних расширений
  • Основные возможности детально рассматриваются в курсе