Блок 2. PostgreSQL изнутри
Не «что такое индекс», а как PostgreSQL хранит версии строк, что видит транзакция, кто кого блокирует и почему планировщик выбрал именно этот план. Для аналитика это требования к консистентности, к миграциям и к производительности, основанные на понимании механизма, а не на «сделайте, чтобы работало быстро».
Лабораторные
| Лаба | Тема |
|---|---|
| Стенд | Docker Compose с PostgreSQL и учебными данными |
| Лаба 1 | Воспроизвести lost update, non-repeatable read, phantom, write skew |
| Лаба 2 | Дедлок, очередь на SKIP LOCKED, очередь блокировок при DDL |
| Лаба 3 | Когда индекс не берётся, ошибки оценки кардинальности, расширенная статистика |
Главный источник
Егор Рогов, «PostgreSQL изнутри» (Postgres Professional). Бесплатный PDF на postgrespro.ru/education/books/internals. Книга покрывает этот блок почти целиком, её части прямо соответствуют модулям:
| Часть книги | Модули |
|---|---|
| I. Изоляция и многоверсионность | 2.1, 2.2 |
| II. Буферный кеш и журнал | 2.6 |
| III. Блокировки | 2.3 |
| IV. Выполнение запросов | 2.4 |
| V. Типы индексов | 2.5 |
В дополнение — бесплатные видеокурсы Postgres Professional DBA2 (архитектура и внутреннее устройство) и QPT (оптимизация запросов).
Критерий завершения блока
Три лабораторные выполнены, выводы записаны своими словами. Можешь по живому EXPLAIN (ANALYZE, BUFFERS) незнакомого запроса за пять минут объяснить, где проблема.