01 Занятие 01: Установка и сопровождение / Редакции и возможности
Эта страница извлечена из официального 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
- дополнительные расширения
- улучшения сторонних расширений
- Основные возможности детально рассматриваются в курсе