Вопрос проверяет понимание внутренней организации хранения данных в PostgreSQL на уровне страниц.
PostgreSQL хранит данные на диске в виде страниц (pages), также называемых блоками. Размер страницы по умолчанию составляет 8 КБ и задаётся при компиляции сервера. Страница — это минимальная единица, которую PostgreSQL читает или записывает за одну операцию ввода-вывода. Все таблицы, индексы и другие объекты базы данных физически организованы как набор страниц.
Каждая страница состоит из нескольких частей:
Когда выполняется запрос SELECT, буферный менеджер проверяет, есть ли нужная страница в общей памяти (shared buffers). Если нет, он читает её с диска. Рассмотрим пример:
-- Создадим таблицу и вставим данные
CREATE TABLE test (id int, name text);
INSERT INTO test VALUES (1, 'Alice'), (2, 'Bob');
-- Посмотрим, сколько страниц занимает таблица
SELECT relpages FROM pg_class WHERE relname = 'test';
-- relpages покажет количество страниц, занятых таблицейПосле вставки данных таблица может занимать одну или несколько страниц. Если данные не помещаются на одну страницу, PostgreSQL создаёт новую.
Понимание страниц важно для настройки производительности PostgreSQL: размер shared_buffers, выбор правильного fillfactor, анализ фрагментации. Знание структуры страниц помогает оптимизировать запросы и управлять дисковым пространством.