linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Главы
  • How it worksскоро
  • Уроки
  • База знаний
  • Собеседование
home/postgres/lessons/pg-lab-18-1-wal-checkpoint

lesson ── postgres-labs ── ~22 мин ── 4 шагов

Понаблюдай за WAL и поймай всплеск FPI после CHECKPOINT

Журнал предзаписи (WAL) фиксирует каждое изменение раньше, чем оно попадёт в файлы данных. Сейчас ты увидишь журнал в работе: замеришь позицию LSN, нагенеришь изменений, посмотришь счётчики pg_stat_wal и поймаешь всплеск full-page images сразу после контрольной точки. Перед шагами предскажи, вырастет ли счётчик.

▶ интерактивный sandbox

Поднимется контейнер postgreslab/postgres-base с PostgreSQL 17 и psql. В браузере откроется терминал, база lab уже настроена. Каждый шаг проверяется автоматически. Сеть air-gapped, наружу контейнер не ходит.

запустить sandbox →

stack ── PostgreSQL 17 · psql · 1 GB RAM · air-gapped · самоуничтожается через 45 мин простоя

Шаги

  1. 01

    Замерь текущую позицию журнала

    sql
    SELECT pg_current_wal_lsn();

    LSN - это смещение в байтах в потоке журнала. Запомни его: разница с будущим LSN покажет, сколько журнала сгенерировали.

    ✓ Позиция журнала снята — это наша отметка «было».

  2. 02

    Сними счётчики pg_stat_wal

    sql
    SELECT wal_records, wal_bytes, wal_fpi FROM pg_stat_wal;

    wal_records - число записей в журнале, wal_bytes - объём, wal_fpi - число full-page images (полных копий страниц).

    ✓ Счётчики журнала на месте — есть от чего отталкиваться.

  3. 03

    Нагенерируй журнал нагрузкой

    sql
    CREATE TABLE wal_demo (id serial PRIMARY KEY, payload text);
    INSERT INTO wal_demo (payload)
      SELECT repeat('x', 100) FROM generate_series(1, 1000);
    SELECT pg_current_wal_lsn();

    Тысяча вставок породила записи в журнал и сдвинула LSN вперёд. Предскажи: на сколько примерно байт он ушёл от стартовой отметки?

    ✓ Нагрузка сгенерирована — журнал заметно вырос.

  4. 04

    Контрольная точка и всплеск full-page images

    sql
    CHECKPOINT;
    UPDATE wal_demo SET payload = repeat('y', 100);
    SELECT wal_fpi FROM pg_stat_wal;

    После контрольной точки первое изменение каждой страницы тащит за собой полную копию страницы (FPI) - защита от рваной записи. Поэтому wal_fpi подскакивает. Предскажи: вырастет ли счётчик после UPDATE?

    подсказка

    FPI пишутся при первом касании страницы после каждой контрольной точки.

    ✓ Full-page images на месте — ты поймал цену надёжности.

Что ты узнал

WAL фиксирует изменения раньше файлов данных. LSN - позиция в потоке журнала; pg_stat_wal показывает темп (wal_records, wal_bytes) и full-page images (wal_fpi). После контрольной точки первое изменение страницы пишет её полную копию.

команды

  • SELECT pg_current_wal_lsn();текущая позиция записи в журнал
  • SELECT wal_records, wal_bytes, wal_fpi FROM pg_stat_wal;темп и состав генерации WAL
  • CHECKPOINT;принудительная контрольная точка

концепции

  • · LSN — смещение в байтах в потоке журнала; разница LSN = объём WAL
  • · wal_fpi подскакивает после контрольной точки из-за full-page images
  • · журнал пишется последовательно и опережает запись страниц данных

← предыдущая

Загляни в буферный кеш и поймай попадания

следующая →

Найди redo point и посмотри, что проиграло бы восстановление

Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки