PostgreSQL изнутри

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

В книге рассматривается внутреннее устройство СУБД PostgreSQL: детали реализации многоверсионности и изоляции на основе снимков данных, включая процедуру очистки неактуальных версий строк; буферный кеш и журнал предзаписи; использование блокировок различных уровней; планирование и выполнение SQL-запросов; принципы расширяемости и особенности имеющихся индексных методов доступа. Большое внимание уделяется возможностям, предоставляемым для самостоятельного изучения механизмов функционирования PostgreSQL. Сайт книги: https://postgrespro.ru/education/books/internals Для администраторов и программистов.

Author(s): Егор Рогов
Edition: 1
Publisher: ДМК Пресс
Year: 2022

Language: Russian
Commentary: Vector PDF
Pages: 660
City: М.
Tags: Databases; Relational Databases; PostgreSQL; Indexing; Caching; Queries; Hashing

О книге
Глава 1. Введение
Организация данных
Базы данных
Системный каталог
Схемы
Табличные пространства
Отношения
Слои и файлы
Страницы
TOAST
Процессы и память
Клиенты и клиент-серверный протокол
Часть I. Изоляция и многоверсионность
Глава 2. Изоляция
Согласованность
Уровни изоляции и аномалии в стандарте SQL
Потерянное обновление
Грязное чтение и Read Uncommitted
Неповторяющееся чтение и Read Committed
Фантомное чтение и Repeatable Read
Отсутствие аномалий и Serializable
Почему именно эти аномалии?
Уровни изоляции в PostgreSQL
Read Committed
Repeatable Read
Serializable
Какой уровень изоляции использовать?
Глава 3. Страницы и версии строк
Структура страниц
Заголовок страницы
Специальная область
Версии строк
Указатели на версии строк
Свободное место
Структура версий строк
Выполнение операций над версиями строк
Вставка
Фиксация
Удаление
Отмена
Обновление
Индексы
TOAST
Виртуальные транзакции
Вложенные транзакции
Точки сохранения
Ошибки и атомарность операций
Глава 4. Снимки данных
Что такое снимок данных
Видимость версий строк в снимке
Из чего состоит снимок
Видимость собственных изменений
Горизонт транзакции
Снимок данных для системного каталога
Экспорт снимка данных
Глава 5. Внутристраничная очистка и hot-обновления
Внутристраничная очистка
Hot-обновления
Внутристраничная очистка при hot-обновлениях
Разрыв hot-цепочки
Внутристраничная очистка индексов
Глава 6. Очистка и автоочистка
Очистка вручную
Еще раз о горизонте базы данных
Этапы выполнения очистки
Сканирование таблицы
Очистка индексов
Очистка таблицы
Усечение таблицы
Анализ
Автоматическая очистка и анализ
Устройство автоочистки
Какие таблицы требуют очистки
Какие таблицы требуют анализа
Автоочистка в действии
Регулирование нагрузки
Управление интенсивностью обычной очистки
Управление интенсивностью автоочистки
Мониторинг очистки
Отслеживание выполнения ручной очистки
Отслеживание выполнения автоочистки
Глава 7. Заморозка
Переполнение счетчика транзакций
Заморозка версий и правила видимости
Управление заморозкой
Минимальный возраст для заморозки
Возраст для «агрессивной» заморозки
Возраст для аварийного срабатывания автоочистки
Возраст для приоритетного режима заморозки
Заморозка вручную
Очистка с заморозкой
Заморозка при загрузке
Глава 8. Перестроение таблиц и индексов
Полная очистка
Необходимость
Оценка плотности информации
Заморозка
Другие способы перестроения
Аналоги полной очистки
Перестроение без долгих блокировок
Профилактика
Читающие запросы
Обновление данных
Часть II. Буферный кеш и журнал
Глава 9. Буферный кеш
Кеширование
Устройство буферного кеша
Попадание в кеш
Промах кеша
Поиск буфера и вытеснение
Массовое вытеснение
Настройка размера
Прогрев кеша
Локальный кеш
Глава 10. Журнал предзаписи
Журналирование
Устройство журнала
Логическая структура
Физическая структура
Контрольная точка
Восстановление
Фоновая запись
Настройка
Настройка контрольной точки
Настройка фоновой записи
Мониторинг
Глава 11. Режимы журнала
Производительность
Надежность
Кеширование
Повреждение данных
Неатомарность записи
Уровни журнала
Minimal
Replica
Logical
Часть III. Блокировки
Глава 12. Блокировки отношений
Общие сведения о блокировках
Тяжелые блокировки
Блокировки номеров транзакций
Блокировки отношений
Очередь ожидания
Глава 13. Блокировки строк
Устройство
Режимы блокировки строки
Исключительные режимы
Разделяемые режимы
Мультитранзакции
Очередь ожидания
Исключительные режимы
Разделяемые режимы
Блокировка без ожидания
Взаимоблокировки
Взаимоблокировка при обновлении строк
Взаимоблокировка двух команд UPDATE
Глава 14. Блокировки разных объектов
Блокировки не-отношений
Блокировки расширения отношения
Блокировки страниц
Рекомендательные блокировки
Предикатные блокировки
Глава 15. Блокировки в памяти
Спин-блокировки
Легкие блокировки
Примеры
Буферный кеш
Буферы журнала предзаписи
Мониторинг ожиданий
Семплирование
Часть IV. Выполнение запросов
Глава 16. Этапы выполнения запросов
Демонстрационная база данных
Протокол простых запросов
Разбор
Трансформация
Планирование
Исполнение
Протокол расширенных запросов
Подготовка
Привязка параметров
Планирование и исполнение
Получение результатов
Глава 17. Статистика
Базовая статистика
Неопределенные значения
Уникальные значения
Наиболее частые значения
Гистограмма
Статистика для нескалярных типов данных
Средний размер поля
Корреляция
Статистика по выражению
Расширенная статистика по выражению
Статистика для индекса по выражению
Многовариантная статистика
Функциональные зависимости между столбцами
Многовариантное число различных значений
Многовариантные списки частых значений
Глава 18. Табличные методы доступа
Подключаемые движки хранения
Последовательное сканирование
Оценка стоимости
Параллельные планы выполнения
Параллельное последовательное сканирование
Оценка стоимости
Ограничения параллельного выполнения
Количество рабочих процессов
Нераспараллеливаемые запросы
Ограниченно распараллеливаемые запросы
Глава 19. Индексные методы доступа
Индексы и расширяемость
Классы и семейства операторов
Класс операторов
Семейство операторов
Интерфейс механизма индексирования
Свойства метода доступа
Свойства индекса
Свойства столбцов
Глава 20. Индексное сканирование
Простое индексное сканирование
Оценка стоимости
Хороший случай: высокая корреляция
Плохой случай: низкая корреляция
Сканирование только индекса
Include-индексы
Сканирование по битовой карте
Точность карты
Действия с битовыми картами
Оценка стоимости
Параллельные версии индексного сканирования
Сравнение методов доступа
Глава 21. Вложенный цикл
Виды и способы соединений
Соединение вложенным циклом
Декартово произведение
Параметризованное соединение
Кеширование (мемоизация) строк
Внешние соединения
Анти- и полусоединения
Не эквисоединения
Параллельный режим
Глава 22. Хеширование
Соединение хешированием
Однопроходное соединение хешированием
Двухпроходное соединение хешированием
Динамические корректировки плана
Соединение хешированием в параллельных планах
Параллельное однопроходное хеш-соединение
Параллельное двухпроходное хеш-соединение
Модификации
Группировка и уникальные значения
Глава 23. Сортировка и слияние
Соединение слиянием
Слияние отсортированных наборов
Параллельный режим
Модификации
Сортировка
Быстрая сортировка
Частичная пирамидальная сортировка
Внешняя сортировка
Инкрементальная сортировка
Параллельный режим
Группировка и уникальные значения
Сравнение способов соединения
Часть V. Типы индексов
Глава 24. Хеш-индекс
Общий принцип
Страничная организация
Класс операторов
Свойства
Свойства метода доступа
Свойства индекса
Свойства столбцов
Глава 25. B-дерево
Общий принцип
Поиск и вставка
Поиск по равенству
Поиск по неравенству
Поиск по диапазону
Вставка
Страничная организация
Компактное хранение дубликатов
Компактное хранение внутренних индексных записей
Класс операторов
Семантика сравнения
Сортировка и составные индексы
Свойства
Свойства метода доступа
Свойства индекса
Свойства столбцов
Глава 26. Индекс GiST
Общий принцип
R-дерево для точек
Страничная организация
Класс операторов
Поиск вхождения в область
Поиск ближайших соседей
Вставка
Ограничение исключения
Свойства
RD-дерево для полнотекстового поиска
Про полнотекстовый поиск
Индексация tsvector
Свойства
Другие типы данных
Глава 27. Индекс SP-GiST
Общий принцип
Дерево квадрантов для точек
Класс операторов
Страничная организация
Поиск
Вставка
Свойства
K-мерные деревья для точек
Префиксное дерево для строк
Класс операторов
Поиск
Вставка
Свойства
Другие типы данных
Глава 28. Индекс GIN
Общий принцип
Индекс для полнотекстового поиска
Страничная организация
Класс операторов
Поиск
Частые и редкие лексемы
Вставка
Ограничение выборки
Свойства
Ограничения GIN и RUM-индекс
Индекс для триграмм
Индекс для массивов
Индекс для JSON
Класс операторов jsonb_ops
Класс операторов jsonb_path_ops
Другие типы данных
Глава 29. Индекс BRIN
Общий принцип
Пример
Страничная организация
Поиск
Обновление сводной информации
Вставка значений
Обобщение зоны
Диапазоны значений (minmax)
Выбор столбцов для индексирования
Размер зоны и эффективность поиска
Свойства
Мультидиапазоны значений (minmax-multi)
Охватывающие значения (inclusion)
Фильтры Блума (bloom)
Заключение
Предметный указатель