О книге....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
Очистка индексов....132
Очистка таблицы....134
Усечение таблицы....134
Анализ....135
Автоматическая очистка и анализ....135
Устройство автоочистки....136
Какие таблицы требуют очистки....137
Какие таблицы требуют анализа....139
Автоочистка в действии....140
Регулирование нагрузки....144
Управление интенсивностью обычной очистки....145
Управление интенсивностью автоочистки....145
Мониторинг очистки....146
Отслеживание выполнения ручной очистки....147
Отслеживание выполнения автоочистки....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
Блокировки номеров транзакций....251
Блокировки отношений....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
Мониторинг ожиданий....300
Семплирование....302
Часть IV. Выполнение запросов....306
Глава 16. Этапы выполнения запросов....308
Демонстрационная база данных....308
Простой протокол запросов....311
Разбор....311
Трансформация....313
Планирование....315
Исполнение....324
Расширенный протокол запросов....326
Подготовка....326
Привязка параметров....327
Планирование и исполнение....328
Получение результатов....331
Глава 17. Статистика....332
Базовая статистика....332
Неопределенные значения....336
Уникальные значения....337
Наиболее частые значения....339
Гистограмма....342
Статистика для нескалярных типов данных....346
Средний размер поля....347
Корреляция....347
Статистика по выражению....348
Расширенная статистика по выражению....349
Статистика для индекса по выражению....350
Многовариантная статистика....351
Функциональные зависимости между столбцами....351
Многовариантное число различных значений....353
Многовариантные списки частых значений....355
Глава 18. Табличные методы доступа....357
Подключаемые движки хранения....357
Последовательное сканирование....360
Оценка стоимости....361
Параллельные планы выполнения....365
Параллельное последовательное сканирование....366
Оценка стоимости....366
Ограничения параллельного выполнения....370
Количество рабочих процессов....370
Нераспараллеливаемые запросы....374
Ограниченно распараллеливаемые запросы....375
Глава 19. Индексные методы доступа....380
Индексы и расширяемость....380
Классы и семейства операторов....383
Класс операторов....383
Семейство операторов....388
Интерфейс механизма индексирования....390
Свойства метода доступа....391
Свойства индекса....395
Свойства столбцов....396
Глава 20. Индексное сканирование....400
Простое индексное сканирование....400
Оценка стоимости....401
Хороший случай: высокая корреляция....402
Плохой случай: низкая корреляция....405
Сканирование только индекса....408
Include-индексы....411
Сканирование по битовой карте....413
Точность карты....414
Действия с битовыми картами....416
Оценка стоимости....417
Параллельные версии индексного сканирования....421
Сравнение методов доступа....423
Глава 21. Вложенный цикл....425
Виды и способы соединений....425
Соединение вложенным циклом....427
Декартово произведение....427
Параметризованное соединение....431
Кеширование (мемоизация) строк....435
Внешние соединения....439
Анти- и полусоединения....440
Неэквисоединения....442
Параллельный режим....443
Глава 22. Хеширование....445
Соединение хешированием....445
Однопроходное соединение хешированием....445
Двухпроходное соединение хешированием....451
Динамические корректировки плана....454
Соединение хешированием в параллельных планах....458
Параллельное однопроходное хеш-соединение....459
Параллельное двухпроходное хеш-соединение....461
Модификации....464
Группировка и уникальные значения....466
Глава 23. Сортировка и слияние....470
Соединение слиянием....470
Слияние отсортированных наборов....470
Параллельный режим....474
Модификации....475
Сортировка....476
Быстрая сортировка....478
Частичная пирамидальная сортировка....479
Внешняя сортировка....481
Инкрементальная сортировка....485
Параллельный режим....487
Группировка и уникальные значения....489
Сравнение способов соединения....492
Часть V. Типы индексов....496
Глава 24. Хеш-индекс....498
Общий принцип....498
Страничная организация....499
Класс операторов....506
Свойства....507
Свойства метода доступа....507
Свойства индекса....508
Свойства столбцов....509
Глава 25. B-дерево....510
Общий принцип....510
Поиск и вставка....511
Поиск по равенству....511
Поиск по неравенству....513
Поиск по диапазону....514
Вставка....514
Страничная организация....516
Компактное хранение дубликатов....520
Компактное хранение внутренних индексных записей....522
Класс операторов....523
Семантика сравнения....523
Сортировка и составные индексы....529
Свойства....534
Свойства метода доступа....534
Свойства индекса....535
Свойства столбцов....535
Глава 26. Индекс GiST....537
Общий принцип....537
R-дерево для точек....539
Страничная организация....542
Класс операторов....543
Поиск вхождения в область....545
Поиск ближайших соседей....547
Вставка....552
Ограничение исключения....553
Свойства....556
RD-дерево для полнотекстового поиска....559
Про полнотекстовый поиск....559
Индексация tsvector....560
Свойства....568
Другие типы данных....568
Глава 27. Индекс SP-GiST....571
Общий принцип....571
Дерево квадрантов для точек....573
Класс операторов....574
Страничная организация....578
Поиск....579
Вставка....580
Свойства....583
K-мерные деревья для точек....585
Префиксное дерево для строк....587
Класс операторов....588
Поиск....589
Вставка....590
Свойства....592
Другие типы данных....593
Глава 28. Индекс GIN....595
Общий принцип....595
Индекс для полнотекстового поиска....596
Страничная организация....598
Класс операторов....600
Поиск....602
Частые и редкие лексемы....603
Вставка....607
Ограничение выборки....609
Свойства....610
Ограничения GIN и RUM-индекс....612
Индекс для триграмм....613
Индекс для массивов....615
Индекс для JSON....619
Класс операторов jsonb_ops....619
Класс операторов jsonb_path_ops....622
Другие типы данных....624
Глава 29. Индекс BRIN....625
Общий принцип....625
Пример....626
Страничная организация....628
Поиск....630
Обновление сводной информации....631
Вставка значений....631
Обобщение зоны....632
Диапазоны значений (minmax)....633
Выбор столбцов для индексирования....634
Размер зоны и эффективность поиска....635
Свойства....639
Мультидиапазоны значений (minmax-multi)....642
Охватывающие значения (inclusion)....645
Фильтры Блума (bloom)....648
Заключение....653
Предметный указатель....654
Перед вами обновленное издание бестселлера "PostgreSQL изнутри".
Рассматривается внутреннее устройство СУБД PostgreSQL: детали реализации многоверсионности и изоляции на основе снимков данных, включая процедуру очистки неактуальных версий строк; буферный кеш и журнал предзаписи; использование блокировок различных уровней; планирование и выполнение SQL-запросов; принципы расширяемости и особенности имеющихся индексных методов доступа. Большое внимание уделяется возможностям, предоставляемым для самостоятельного изучения механизмов функционирования PostgreSQL.В новом издании учтены замечания читателей и исправлены опечатки, а также внесены изменения, произошедшие в версии PostgreSQL 16.
Книга предназначена администраторам и программистам, а также будет полезна всем разработчикам, которых не устраивает работа с базой данных как с "черным ящиком".