lesson ── postgres-labs ── ~20 мин ── 4 шагов
Подключись к свежему серверу и составь карту его процессов: кто работает в фоне и за что отвечает. Перед каждым запросом предсказывай результат - сколько процессов увидишь и каких.
интерактивный sandbox
Поднимется контейнер postgreslab/postgres-base с PostgreSQL 17 и psql. В браузере откроется терминал, база lab уже настроена. Каждый шаг проверяется автоматически. Сеть air-gapped, наружу контейнер не ходит.
stack ── PostgreSQL 17 · psql · 1 GB RAM · air-gapped · самоуничтожается через 45 мин простоя
Контейнер с PostgreSQL поднят, psql уже настроен на базу lab.
Убедись, что соединение живо.
SELECT 1;
✓ Соединение есть - можно смотреть процессы.
Каждый процесс сервера виден в pg_stat_activity, а колонка
backend_type говорит, что это за процесс.
SELECT pid, backend_type FROM pg_stat_activity ORDER BY backend_type;
Найди свой client backend - это твоё соединение. Остальные строки -
фоновые процессы.
Своё соединение точно опознаётся по pid = pg_backend_pid().
✓ Своё соединение найдено - оно client backend.
Предскажи, сколько фоновых процессов увидишь, и проверь. Костяк - checkpointer, background writer, walwriter, autovacuum launcher.
SELECT count(*) FROM pg_stat_activity
WHERE backend_type IN ('checkpointer','background writer','walwriter','autovacuum launcher');Каждый из четырёх процессов соответствует механизму: журналу, кешу, очистке.
✓ Все четыре фоновых процесса костяка на месте.
Разделяемую память, которую видят все эти процессы, задаёт
shared_buffers. Предскажи её размер, потом проверь.
SHOW shared_buffers;
✓ 128MB общего кеша - его видит каждый процесс сервера.
Сервер PostgreSQL - это postmaster, твой client backend и фоновый костяк: checkpointer, background writer, walwriter, autovacuum launcher. Все они видны из pg_stat_activity и делят разделяемую память.
команды
SELECT pid, backend_type FROM pg_stat_activity;перечислить процессы сервераSELECT pg_backend_pid();pid своего соединенияSHOW shared_buffers;размер общего буферного кешаконцепции