Архитектура компонентов в составе продукта# Содержание# Архитектура PostgreSQL Обзор внутренних компонентов PostgreSQL Путь запроса Как устанавливаются соединения Этап парсера Система правил PostgreSQL Планировщик/Оптимизатор Исполнитель Системные каталоги Обзор pg_aggregate pg_am pg_amop pg_amproc pg_attrdef pg_attribute pg_authid pg_auth_members pg_cast pg_class pg_collation pg_constraint pg_conversion pg_database pg_db_role_setting pg_default_acl pg_depend pg_description pg_enum pg_event_trigger pg_extension pg_foreign_data_wrapper pg_foreign_server pg_foreign_table pg_index pg_inherits pg_init_privs pg_language pg_largeobject pg_largeobject_metadata pg_namespace pg_opclass pg_operator pg_opfamily pg_parameter_acl pg_partitioned_table pg_policy pg_proc pg_publication pg_publication_namespace pg_publication_rel pg_range pg_replication_origin pg_rewrite pg_seclabel pg_sequence pg_shdepend pg_shdescription pg_shseclabel pg_statistic pg_statistic_ext pg_statistic_ext_data pg_subscription pg_subscription_rel pg_tablespace pg_transform pg_trigger pg_ts_config pg_ts_config_map pg_ts_dict pg_ts_parser pg_ts_template pg_type pg_user_mapping Системные представления Обзор pg_available_extensions pg_available_extension_versions pg_backend_memory_contexts pg_config pg_cursors pg_file_settings pg_group pg_hba_file_rules pg_ident_file_mappings pg_indexes pg_locks pg_matviews pg_policies pg_prepared_statements pg_prepared_xacts pg_publication_tables pg_replication_origin_status pg_replication_slots pg_roles pg_rules pg_seclabels pg_sequences pg_settings pg_shadow pg_shmem_allocations pg_stats pg_stats_ext pg_stats_ext_exprs pg_tables pg_timezone_abbrevs pg_timezone_names pg_user pg_user_mappings pg_views Протокол Frontend/Backend Обзор Поток сообщений Аутентификация SASL Протокол потоковой репликации Протокол логической потоковой репликации Типы данных сообщения Форматы сообщений Поля сообщений об ошибках и уведомлениях Форматы сообщений логической репликации Сводка изменений с момента запуска Протокола 2.0 Соглашения о кодировании PostgreSQL Форматирование Сообщения об ошибках на сервере Руководство по стилю сообщения об ошибке Различные соглашения о кодировании Поддержка родного языка Для переводчика Для программиста Написание обработчика процедурного языка Написание обертки для сторонних данных Функции-обертки сторонних данных Подпрограммы обертки сторонних данных Вспомогательные функции обертки сторонних данных Планирование запросов с оберткой для сторонних данных Блокировка строк в обертках сторонних данных Составление метода выборки таблицы Вспомогательные функции метода выборки Написание пользовательского поставщика сканирования Создание пользовательских путей сканирования Создание пользовательских планов сканирования Выполнение пользовательского сканирования Генетический оптимизатор запросов Обработка запросов как сложная задача оптимизации Генетические алгоритмы Оптимизация генетических запросов (GEQO) в PostgreSQL Дальнейшее чтение Определение интерфейса для табличных методов доступа Определение интерфейса для индексных методов доступа Базовая структура API для индексов Функции для индексных методов доступа Сканирование индексов Замечания по блокировкам индексов Проверки уникальности индекса Функции оценки стоимости индекса Общие записи WAL Пользовательские диспетчеры ресурсов WAL Индексы B-дерева Введение Поведение классов операторов B-дерева Функции поддержки B-дерева Реализация Индексы GiST Введение Встроенные классы операторов Расширяемость Реализация Примеры Индексы SP-GiST Введение Встроенные классы операторов Расширяемость Реализация Примеры Индексы GIN Введение Встроенные классы операторов Расширяемость Реализация Советы и хитрости GIN Ограничения Примеры Индексы BRIN Введение Встроенные классы операторов Расширяемость Индексы хеширования Обзор Реализация Физическое хранилище базы данных Компоновка файла базы данных TOAST Карта свободного пространства Карта видимости Форк инициализации Компоновка страницы базы данных Кортежи только в куче (Heap-Only Tuples, HOT) Объявления системного каталога и его начальное содержимое Правила декларирования системного каталога Исходные данные системного каталога Формат файла BKI Команды BKI Структура файла Bootstrap BKI Пример BKI Как планировщик использует статистику Примеры оценки строк Примеры многомерной статистики Статистика и безопасность планировщика Формат резервного копирования манифеста Объект верхнего уровня резервного копирования манифеста Резервное копирование объекта файла манифеста Резервное копирование объекта диапазона WAL манифеста