Весна в самом разгаре, и мы представляем вам самые горячие зимние новости январского Commitfest. Давайте сразу перейдем к делу!
Инкрементное резервное копирование
PostgreSQL 17 представляет инкрементные резервные копии, функцию, предназначенную для сохранения только тех изменений, которые были внесены по сравнению с другой резервной копией, тем самым уменьшая объем хранимых данных и время, необходимое для создания резервных копий. Это достигается с помощью процесса walsummarizer
, который сканирует WAL и собирает информацию о модифицированных страницах. Процесс контролируется параметром summarize_wal
, который можно активировать без перезапуска сервера.
Вот краткий обзор шагов:
- Включите
summarize_wal
и перезагрузите конфигурацию:
ALTER SYSTEM SET summarize_wal = on;
SELECT pg_reload_conf();
- Создайте полную резервную копию:
$ pg_basebackup -c fast -D backups/full
- Внесите изменения и создайте инкрементные резервные копии:
CREATE TABLE tickets_copy AS SELECT * FROM tickets;
$ pg_basebackup -c fast -D backups/increment1 -i backups/full/backup_manifest
- Восстановите из инкрементных резервных копий с помощью
pg_combinebackup
:
$ pg_combinebackup backups/full backups/increment1 backups/increment2 -o backups/full_combined
С инкрементными резервными копиями PostgreSQL 17 значительно оптимизирует процесс резервного копирования, делая его более эффективным и менее ресурсоемким.
Логическая репликация: поддержание статуса подписки
PostgreSQL 17 теперь сохраняет статус подписок при обновлении сервера-подписчика, позволяя подписчику продолжать получать изменения от издателя без повторной синхронизации данных. Это улучшение упрощает процесс обновления и обеспечивает непрерывность в репликации данных.
Динамический реестр общей памяти
Введен новый реестр для динамических сегментов общей памяти, позволяющий процессам получать доступ к общей памяти без необходимости перезапуска сервера. Первым расширением, использующим этот интерфейс, является pg_prewarm
, которое теперь избегает чрезмерного потребления общей памяти, если не загружено при старте сервера.
EXPLAIN (memory): отчет об использовании памяти для планирования
Команда EXPLAIN теперь включает параметр memory
, который сообщает о памяти, используемой во время планирования запроса. Эта функция особенно полезна для понимания требований к памяти сложных запросов, включающих несколько таблиц или разделов.
pg_stat_checkpointer: мониторинг точек перезапуска на репликах
Новый вид pg_stat_checkpointer
в PostgreSQL 17 включает столбцы для мониторинга точек перезапуска на репликах. Это помогает обеспечить, чтобы точки перезапуска на репликах не создавались чаще, чем на основном сервере, поддерживая согласованность в процессе репликации.
Параллельное создание BRIN индексов
PostgreSQL 17 позволяет параллельное создание BRIN индексов, что позволяет нескольким рабочим процессам создавать индексы одновременно. Это улучшение повышает производительность и эффективность создания индексов для больших наборов данных.
Запросы с условием IS [NOT] NULL для NOT NULL столбцов
Для оптимизации запросов, включающих условия IS [NOT] NULL для NOT NULL столбцов, PostgreSQL 17 сначала выполняет проверку NOT NULL. Это уменьшает количество ненужных проверок и улучшает производительность запросов.
Оптимизация SET search_path
Параметр search_path
был оптимизирован путем реализации хеш-таблицы последних использованных значений, что ускоряет вызовы функций, устанавливающих этот параметр. Эта оптимизация повышает производительность функций, которые часто изменяют путь поиска.
Оптимизация GROUP BY
PostgreSQL 17 повторно вводит оптимизацию для запросов GROUP BY, позволяя планировщику…