О книге....18
Глава 1. Введение....24
Организация данных....24
Базы данных....24
Системный каталог....25
Схемы....26
Табличные пространства....27
Отношения....28
Слои и файлы....29
Страницы....34
TOAST....34
Процессы и память....40
Клиенты и клиент-серверный протокол....42
Часть I. Изоляция и многоверсионность....46
Глава 2. Изоляция....48
Согласованность....48
Уровни изоляции и аномалии в стандарте SQL....50
Потерянное обновление....51
Грязное чтение и Read Uncommitted....51
Неповторяющееся чтение и Read Committed....52
Фантомное чтение и Repeatable Read....52
Отсутствие аномалий и Serializable....53
Почему именно эти аномалии?....53
Уровни изоляции в PostgreSQL....55
Read Committed....56
Repeatable Read....64
Serializable....71
Какой уровень изоляции использовать?....74
Глава 3. Страницы и версии строк....76
Структура страниц....76
Заголовок страницы....76
Специальная область....77
Версии строк....77
Указатели на версии строк....78
Свободное место....79
Структура версий строк....79
Выполнение операций над версиями строк....81
Вставка....82
Фиксация....86
Удаление....88
Отмена....89
Обновление....89
Индексы....90
TOAST....91
Виртуальные транзакции....92
Вложенные транзакции....93
Точки сохранения....93
Ошибки и атомарность операций....95
Глава 4. Снимки данных....98
Что такое снимок данных....98
Видимость версий строк в снимке....99
Из чего состоит снимок....100
Видимость собственных изменений....105
Горизонт транзакции....106
Снимок данных для системного каталога....109
Экспорт снимка данных....110
Глава 5. Внутристраничная очистка и hot-обновления....112
Внутристраничная очистка....112
Hot-обновления....116
Внутристраничная очистка при hot-обновлениях....120
Разрыв hot-цепочки....122
Внутристраничная очистка индексов....124
Глава 6. Очистка и автоочистка....126
Очистка вручную....126
Еще раз о горизонте базы данных....129
Этапы выполнения очистки....132
Сканирование таблицы....132
Очистка индексов....133
Очистка таблицы....134
Усечение таблицы....134
Анализ....135
Автоматическая очистка и анализ....135
Устройство автоочистки....136
Какие таблицы требуют очистки....137
Какие таблицы требуют анализа....139
Автоочистка в действии....140
Регулирование нагрузки....144
Управление интенсивностью обычной очистки....145
Управление интенсивностью автоочистки....145
Мониторинг очистки....146
Отслеживание выполнения ручной очистки....146
Отслеживание выполнения автоочистки....149
Глава 7. Заморозка....151
Переполнение счетчика транзакций....151
Заморозка версий и правила видимости....152
Управление заморозкой....155
Минимальный возраст для заморозки....156
Возраст для агрессивной заморозки....158
Возраст для аварийного срабатывания автоочистки....160
Возраст для приоритетного режима заморозки....162
Заморозка вручную....163
Очистка с заморозкой....163
Заморозка при загрузке....163
Глава 8. Перестроение таблиц и индексов....166
Полная очистка....166
Необходимость....166
Оценка плотности информации....167
Заморозка....171
Другие способы перестроения....172
Аналоги полной очистки....172
Перестроение без долгих блокировок....173
Профилактика....174
Читающие запросы....174
Обновление данных....174
Часть II. Буферный кеш и журнал....178
Глава 9. Буферный кеш....180
Кеширование....180
Устройство буферного кеша....181
Попадание в кеш....183
Промах кеша....188
Поиск буфера и вытеснение....189
Массовое вытеснение....191
Настройка размера....195
Прогрев кеша....198
Локальный кеш....200
Глава 10. Журнал предзаписи....202
Журналирование....202
Устройство журнала....204
Логическая структура....204
Физическая структура....207
Контрольная точка....209
Восстановление....214
Фоновая запись....217
Настройка....218
Настройка контрольной точки....218
Настройка фоновой записи....221
Мониторинг....222
Глава 11. Режимы журнала....225
Производительность....225
Надежность....229
Кеширование....230
Повреждение данных....231
Неатомарность записи....233
Уровни журнала....237
Minimal....238
Replica....240
Logical....242
Часть III. Блокировки....244
Глава 12. Блокировки отношений....246
Общие сведения о блокировках....246
Тяжелые блокировки....249
Блокировки номеров транзакций....250
Блокировки отношений....252
Очередь ожидания....255
Глава 13. Блокировки строк....259
Устройство....259
Режимы блокировки строки....260
Исключительные режимы....260
Разделяемые режимы....262
Мультитранзакции....263
Очередь ожидания....265
Исключительные режимы....265
Разделяемые режимы....272
Блокировка без ожидания....275
Взаимоблокировки....277
Взаимоблокировка при обновлении строк....279
Взаимоблокировка двух команд UPDATE....280
Глава 14. Блокировки разных объектов....284
Блокировки неотношений....284
Блокировки расширения отношения....286
Блокировки страниц....287
Рекомендательные блокировки....287
Предикатные блокировки....289
Глава 15. Блокировки в памяти....296
Спин-блокировки....296
Легкие блокировки....297
Примеры....297
Буферный кеш....297
Буферы журнала предзаписи....299
Кеш SLRU....300
Мониторинг ожиданий....301
Семплирование....303
Часть IV. Выполнение запросов....306
Глава 16. Этапы выполнения запросов....308
Демонстрационная база данных....308
Простой протокол запросов....311
Разбор....311
Трансформация....313
Планирование....315
Исполнение....326
Расширенный протокол запросов....328
Подготовка....328
Привязка параметров....329
Планирование и исполнение....330
Получение результатов....333
Глава 17. Статистика....334
Базовая статистика....334
Неопределенные значения....338
Уникальные значения....339
Наиболее частые значения....341
Гистограмма....344
Статистика для нескалярных типов данных....348
Средний размер поля....349
Корреляция....349
Статистика по выражению....350
Расширенная статистика по выражению....351
Статистика для индекса по выражению....352
Многовариантная статистика....353
Функциональные зависимости между столбцами....353
Многовариантное число различных значений....355
Многовариантные списки частых значений....357
Глава 18. Табличные методы доступа....359
Подключаемые движки хранения....359
Последовательное сканирование....362
Оценка стоимости....363
Параллельные планы выполнения....367
Параллельное последовательное сканирование....368
Оценка стоимости....368
Ограничения параллельного выполнения....372
Количество рабочих процессов....372
Нераспараллеливаемые запросы....376
Ограниченно распараллеливаемые запросы....377
Глава 19. Индексные методы доступа....382
Индексы и расширяемость....382
Классы и семейства операторов....385
Класс операторов....385
Семейство операторов....390
Интерфейс механизма индексирования....392
Свойства метода доступа....393
Свойства индекса....397
Свойства столбцов....398
Глава 20. Индексное сканирование....402
Простое индексное сканирование....402
Оценка стоимости....403
Хороший случай: высокая корреляция....404
Плохой случай: низкая корреляция....407
Сканирование только индекса....410
Include-индексы....413
Сканирование по битовой карте....415
Точность карты....416
Действия с битовыми картами....418
Оценка стоимости....419
Параллельные версии индексного сканирования....423
Сравнение методов доступа....425
Глава 21. Вложенный цикл....427
Виды и способы соединений....427
Соединение вложенным циклом....429
Декартово произведение....429
Параметризованное соединение....433
Кеширование (мемоизация) строк....437
Внешние соединения....441
Анти- и полусоединения....442
Неэквисоединения....444
Параллельный режим....445
Глава 22. Хеширование....447
Соединение хешированием....447
Однопроходное соединение хешированием....447
Двухпроходное соединение хешированием....453
Динамические корректировки плана....456
Соединение хешированием в параллельных планах....460
Параллельное однопроходное хеш-соединение....461
Параллельное двухпроходное хеш-соединение....463
Модификации....466
Группировка и уникальные значения....468
Глава 23. Сортировка и слияние....473
Соединение слиянием....473
Слияние отсортированных наборов....473
Параллельный режим....477
Модификации....478
Сортировка....479
Быстрая сортировка....481
Частичная пирамидальная сортировка....482
Внешняя сортировка....484
Инкрементальная сортировка....488
Параллельный режим....490
Группировка и уникальные значения....492
Сравнение способов соединения....495
Часть V. Типы индексов....500
Глава 24. Хеш-индекс....502
Общий принцип....502
Страничная организация....503
Класс операторов....510
Свойства....511
Свойства метода доступа....511
Свойства индекса....512
Свойства столбцов....513
Глава 25. B-дерево....514
Общий принцип....514
Поиск и вставка....515
Поиск по равенству....515
Поиск по неравенству....517
Поиск по диапазону....518
Вставка....518
Страничная организация....520
Компактное хранение дубликатов....524
Компактное хранение внутренних индексных записей....526
Класс операторов....527
Семантика сравнения....527
Сортировка и составные индексы....533
Свойства....538
Свойства метода доступа....538
Свойства индекса....539
Свойства столбцов....540
Глава 26. Индекс GiST....541
Общий принцип....541
R-дерево для точек....543
Страничная организация....546
Класс операторов....547
Поиск вхождения в область....549
Поиск ближайших соседей....551
Вставка....556
Ограничение исключения....557
Свойства....560
RD-дерево для полнотекстового поиска....563
Про полнотекстовый поиск....563
Индексация tsvector....564
Свойства....572
Другие типы данных....572
Глава 27. Индекс SP-GiST....575
Общий принцип....575
Дерево квадрантов для точек....577
Класс операторов....578
Страничная организация....582
Поиск....583
Вставка....584
Свойства....587
K-мерные деревья для точек....589
Префиксное дерево для строк....591
Класс операторов....592
Поиск....593
Вставка....594
Свойства....596
Другие типы данных....597
Глава 28. Индекс GIN....599
Общий принцип....599
Индекс для полнотекстового поиска....600
Страничная организация....602
Класс операторов....604
Поиск....606
Частые и редкие лексемы....607
Вставка....611
Ограничение выборки....613
Свойства....614
Ограничения GIN и RUM-индекс....616
Индекс для триграмм....617
Индекс для массивов....619
Индекс для JSON....623
Класс операторов jsonb_ops....623
Класс операторов jsonb_path_ops....626
Другие типы данных....628
Глава 29. Индекс BRIN....629
Общий принцип....629
Пример....630
Страничная организация....632
Поиск....634
Обновление сводной информации....635
Вставка значений....635
Обобщение зоны....636
Диапазоны значений (minmax)....637
Выбор столбцов для индексирования....638
Размер зоны и эффективность поиска....639
Свойства....643
Мультидиапазоны значений (minmax-multi)....646
Охватывающие значения (inclusion)....649
Фильтры Блума (bloom)....652
Заключение....657
Предметный указатель....658
Перед вами обновленное издание бестселлера "PostgreSQL изнутри".
Рассматривается внутреннее устройство СУБД PostgreSQL: детали реализации многоверсионности и изоляции на основе снимков данных, включая процедуру очистки неактуальных версий строк; буферный кеш и журнал предзаписи; использование блокировок различных уровней; планирование и выполнение SQL-запросов; принципы расширяемости и особенности имеющихся индексных методов доступа. Большое внимание уделяется возможностям, предоставляемым для самостоятельного изучения механизмов функционирования PostgreSQL.
В новом издании учтены замечания читателей и исправлены опечатки, а также внесены изменения, произошедшие в версии PostgreSQL 17.
Книга предназначена администраторам и программистам, а также будет полезна всем разработчикам, которых не устраивает работа с базой данных как с "черным ящиком".