Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Что такое страницы (pages) в PostgreSQL?

Вопрос проверяет понимание внутренней организации хранения данных в PostgreSQL на уровне страниц.

Короткий ответ

Страница (page) — это минимальная единица ввода-вывода в PostgreSQL, обычно размером 8 КБ. Все данные таблиц и индексов хранятся в виде набора страниц. Каждая страница содержит заголовок, область данных и указатели на строки. Буферный менеджер управляет загрузкой страниц из диска в общую память.

Длинный ответ

Что такое страницы в PostgreSQL?

PostgreSQL хранит данные на диске в виде страниц (pages), также называемых блоками. Размер страницы по умолчанию составляет 8 КБ и задаётся при компиляции сервера. Страница — это минимальная единица, которую PostgreSQL читает или записывает за одну операцию ввода-вывода. Все таблицы, индексы и другие объекты базы данных физически организованы как набор страниц.

Структура страницы

Каждая страница состоит из нескольких частей:

  • Заголовок (PageHeaderData) — содержит метаданные: номер страницы, контрольную сумму, указатели на свободное пространство и т.д.
  • Массив указателей на строки (ItemIdData) — каждый элемент указывает на конкретную строку (tuple) внутри страницы.
  • Область данных — сами строки, которые могут быть размещены в любом порядке.
  • Специальная область — используется некоторыми типами индексов (например, GiST, GIN) для хранения дополнительной информации.

Пример работы со страницами

Когда выполняется запрос 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, анализ фрагментации. Знание структуры страниц помогает оптимизировать запросы и управлять дисковым пространством.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • SQL

Ключевые слова

#PostgreSQL

#pages

#storage

#buffer manager

#heap

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.