§ how it works · postgresql
PostgreSQL, до страницы и кортежа.
Каждая карточка ниже - SVG-визуализация одной внутренней механики PostgreSQL: как страница на 8 КБ заполняется с двух концов и почему один UPDATE оставляет на диске две версии одной строки. Рисованная модель слоя хранения, а не список SQL-команд.
Это рисованные схемы, не sandbox. Чтобы вскрыть настоящую страницу через pageinspect и увидеть две версии на двух сессиях - в уроки с живым сервером.
хранение · 5 шагов
Анатомия страницы: 8 КБ, заполняется с двух концов
Таблица на диске - массив страниц по 8 КБ, и каждая заполняется сразу с двух сторон: массив указателей строк растёт сверху вниз от заголовка, кортежи растут снизу вверх от конца, а свободное место - это зазор между ними. Вот как заполняется одна страница.
посмотреть→MVCC · 5 шагов
MVCC: одна строка, две версии
UPDATE в PostgreSQL никогда не перезаписывает строку. Он пишет новую версию, а старую штампует транзакцией, которая её устарила. Какое-то время одна строка существует на странице дважды, и две сессии могут читать две разные правды. Вот как, и как потом убирает VACUUM.
посмотреть→