PostgreSQL: различия между версиями

Материал из sysadm
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
 
= PostgreSQL Community =
 
= PostgreSQL Community =
  
'''''Autovacuum''''' - процесс сборки мусора
+
Архитектура PostgreSQL состоит из следующих ключевых компонентов
  
 +
* Основной процесс сервера (Postmaster) - Главный управляющий процесс, который запускает и координирует все остальные процессы PostgreSQL. Он отвечает за управление соединениями, восстановление после сбоев и поддержание общей работоспособности системы.
 +
* Фоновые процессы (Background Processes) - Различные процессы, работающие в фоновом режиме для выполнения основных задач, таких как:
 +
** Запись WAL (WAL Writer) - Отвечает за запись данных журнала предзаписи (Write-Ahead Log, WAL) из буферов WAL на диск для обеспечения целостности данных.
 +
** Очистка (Autovacuum Launcher/Worker) - Автоматически запускает процессы VACUUM для очистки "мертвых" строк (удаленных или обновленных записей) и сбора статистики для оптимизатора запросов.
 +
** Контрольные точки (Checkpointer) - Периодически сбрасывает все измененные страницы данных из общей памяти на диск для обеспечения согласованности и минимизации времени восстановления.
 +
** Фоновые рабочие процессы (Background Workers) - Введены в более поздних версиях, используются для выполнения параллельных операций, например, при параллельном сканировании, параллельных индексах GIN и асинхронном I/O.
 +
* Бэкенд-процессы (Backend Processes) - Отдельный процесс, который создается postmaster'ом для обработки каждого клиентского соединения и выполнения запросов. Каждый процесс управляет синтаксическим анализом, планированием и выполнением SQL-запросов.
 +
* Общая память (Shared Memory) - Область памяти, доступная для всех процессов PostgreSQL. Ключевые ее части:
 +
** Общие буферы (Shared Buffers) - Основной кэш, где хранятся блоки данных, считанные с диска, для ускорения повторного доступа.
 +
** Буферы WAL (WAL Buffers) - Временное хранилище для записей WAL перед их записью на диск.
 +
** Кэш системных каталогов - Кэширование информации о структуре базы данных.
 +
* Физическое хранилище данных (Data Directory/Storage) - Каталог на диске, где хранятся все физические файлы базы данных, включая файлы данных (heap files), файлы индексов, файлы WAL и системные каталоги (системную метаинформацию).
  
Производительность и оптимизация
+
Эти компоненты совместно обеспечивают надежное хранение, извлечение и обработку данных в PostgreSQL
  
* '''''Asynchronous I/O (AIO)''''' - новая подсистема для асинхронного ввода-вывыода, которая значительно повышает производительность операций последовательного сканирования, сканирования битовых карт и VACUUM
 
* '''''Skip Scans''''' - поддержка сканирования с пропуском (skip scan) для B-tree индексов, что позволяет использовать многоколоночные индексы даже при отсутствии в условии первой колонки
 
* Параллельное создание GIN индексов - возможность распараллеливания процесса построения GIN индексов для ускорения их создания
 
* Улучшения оптимизатора запросов - более "умное" планирование запросов, особенно для операций JOIN и GROUP BY, а также улучшенное использование инкрементальных сортировок в merge joins
 
  
Функции для разработчиков
+
Клиентские приложения: Приложения, инструменты или интерфейсы (например, psql, драйверы JDBC/ODBC), которые подключаются к серверу PostgreSQL для отправки запросов и получения результатов.
 
 
* '''''uuidv7()''''' - новая функция для генерации UUID версии 7, которые упорядочены по времени, что обеспечивает лучшую производительность индексов при распределенных нагрузках.
 
* Виртуальные генерируемые столбцы - теперь являются поведением по умолчанию (ранее были STORED), что означает вычисление значений при чтении данных, а не при записи, экономя место на диске.
 
* Расширенное предложение RETURNING - возможность доступа к значениям OLD и NEW в предложении RETURNING для команд INSERT, UPDATE, DELETE и MERGE.
 
* Временные ограничения (Temporal Constraints) - поддержка ограничений целостности (PRIMARY KEY, UNIQUE, FOREIGN KEY) над диапазонами (например, временными интервалами).
 
 
 
Администрирование и безопасность
 
 
 
* Аутентификация '''''OAuth 2.0''''' - встроенная поддержка аутентификации через OAuth 2.0, упрощающая интеграцию с современными системами единого входа (SSO).
 
* Улучшенный '''''pg_upgrade''''' - утилита обновления мажорных версий теперь сохраняет статистику планировщика, что устраняет провалы производительности сразу после обновления.
 
* Улучшенный '''''EXPLAIN ANALYZE''''' - вывод команды EXPLAIN ANALYZE стал информативнее, включая детали об использовании памяти, диска и статистику WAL.
 
* Прекращение поддержки MD5 - метод аутентификации на основе MD5 устарел и будет удален в будущих версиях, рекомендуется переход на SCRAM.
 
* Новое представление '''''pg_stat_io''''' - новое системное представление для детального мониторинга операций ввода-вывода.
 
  
 
= Postgres Pro Enterprise =
 
= Postgres Pro Enterprise =

Версия 22:04, 5 декабря 2025

PostgreSQL Community

Архитектура PostgreSQL состоит из следующих ключевых компонентов

  • Основной процесс сервера (Postmaster) - Главный управляющий процесс, который запускает и координирует все остальные процессы PostgreSQL. Он отвечает за управление соединениями, восстановление после сбоев и поддержание общей работоспособности системы.
  • Фоновые процессы (Background Processes) - Различные процессы, работающие в фоновом режиме для выполнения основных задач, таких как:
    • Запись WAL (WAL Writer) - Отвечает за запись данных журнала предзаписи (Write-Ahead Log, WAL) из буферов WAL на диск для обеспечения целостности данных.
    • Очистка (Autovacuum Launcher/Worker) - Автоматически запускает процессы VACUUM для очистки "мертвых" строк (удаленных или обновленных записей) и сбора статистики для оптимизатора запросов.
    • Контрольные точки (Checkpointer) - Периодически сбрасывает все измененные страницы данных из общей памяти на диск для обеспечения согласованности и минимизации времени восстановления.
    • Фоновые рабочие процессы (Background Workers) - Введены в более поздних версиях, используются для выполнения параллельных операций, например, при параллельном сканировании, параллельных индексах GIN и асинхронном I/O.
  • Бэкенд-процессы (Backend Processes) - Отдельный процесс, который создается postmaster'ом для обработки каждого клиентского соединения и выполнения запросов. Каждый процесс управляет синтаксическим анализом, планированием и выполнением SQL-запросов.
  • Общая память (Shared Memory) - Область памяти, доступная для всех процессов PostgreSQL. Ключевые ее части:
    • Общие буферы (Shared Buffers) - Основной кэш, где хранятся блоки данных, считанные с диска, для ускорения повторного доступа.
    • Буферы WAL (WAL Buffers) - Временное хранилище для записей WAL перед их записью на диск.
    • Кэш системных каталогов - Кэширование информации о структуре базы данных.
  • Физическое хранилище данных (Data Directory/Storage) - Каталог на диске, где хранятся все физические файлы базы данных, включая файлы данных (heap files), файлы индексов, файлы WAL и системные каталоги (системную метаинформацию).

Эти компоненты совместно обеспечивают надежное хранение, извлечение и обработку данных в PostgreSQL


Клиентские приложения: Приложения, инструменты или интерфейсы (например, psql, драйверы JDBC/ODBC), которые подключаются к серверу PostgreSQL для отправки запросов и получения результатов.

Postgres Pro Enterprise

Основные модули и функции, уникальные для редакции Postgres Pro Enterprise

  • CFS (Compressed File System) - встроенный механизм постраничного сжатия данных для экономии дискового пространства и снижения операций ввода-вывода
  • 64-разрядный счетчик транзакций - устраняет проблему переполнения 32-разрядного счетчика транзакций (wraparound), присущую стандартному PostgreSQL
  • BiHA (Built-in High Availability) - встроенный высокодоступный отказоустойчивый кластер (multi-master) с быстрым временем переключения (failover)
  • Aqo (Adaptive Query Optimizer) - расширение для адаптивной оптимизации планов запросов на основе машинного обучения
  • Усовершенствованный диагностический профайлер - инструмент для более глубокого анализа и приоритизации ресурсов
  • Автономные транзакции - поддержка автономных транзакций для определенных сценариев
  • Улучшенное секционирование таблиц - оптимизация работы с большим количеством партиций (более 10 000)
  • Уменьшенный размер B-tree индексов - оптимизация хранения дублирующихся ключей
  • Proxima - пуллер соединений и прокси-сервер, оптимизированный для работы с кластером
  • Автоматическое восстановление страниц - механизм автоматического исправления поврежденных страниц данных при репликации
  • pgpro_pwr (Postgres Pro Workload Reporter) - модуль для формирования отчетов о производительности и загрузке системы, аналогичный Oracle AWR

Лицензирование Postgres Pro Enterprise осуществляется за ядра процессора, все эти функции и модули включены в стоимость лицензии