Оптимизация запросов в PostgreSQL
Book information
Description
Книга поможет вам писать запросы, которые выполняются быстро и вовремя доставляют результаты. Вы научитесь смотреть на процесс написания запроса с точки зрения механизма базы данных и начнете думать, как оптимизатор базы данных. Объясняется, как читать и понимать планы выполнения запросов, какие существуют методы воздействия на них с точки зрения оптимизации производительности, и показано, как эти методы используются вместе для создания эффективных приложений. Издание предназначено разработчикам и администраторам баз данных, а также системным архитекторам, использующим PostgreSQL. От издательства Об авторах О техническом редакторе Благодарности Вступление Глава 1. Зачем нужна оптимизация? Что подразумевается под оптимизацией? Императивный и декларативный подходы: почему это сложно Цели оптимизации Оптимизация процессов Оптимизация OLTP и OLAP Проектирование базы данных и производительность Разработка приложений и производительность Другие этапы жизненного цикла Особенности PostgreSQL Выводы Глава 2. Теория: да, она нужна нам! Обзор обработки запросов Компиляция Оптимизация и выполнение Реляционные, логические и физические операции Реляционные операции Логические операции Запросы как выражения: мыслить множествами Операции и алгоритмы Выводы Глава 3. Еще больше теории: алгоритмы Стоимостные модели алгоритмов Алгоритмы доступа к данным Представление данных Полное (последовательное) сканирование Доступ к таблицам на основе индексов Сканирование только индекса Сравнение алгоритмов доступа к данным Индексные структуры Что такое индекс? B-деревья Почему так часто используются B-деревья? Битовые карты Другие виды индексов Сочетание отношений Вложенные циклы Алгоритмы на основе хеширования Сортировка слиянием Сравнение алгоритмов Выводы Глава 4. Планы выполнения Собираем все вместе: как оптимизатор создает план выполнения Чтение планов выполнения Планы выполнения Что происходит во время оптимизации? Почему планов выполнения так много? Как рассчитываются стоимости выполнения? Почему оптимизатор может ошибаться? Выводы Глава 5. Короткие запросы и индексы Какие запросы считаются короткими? Выбор критериев фильтрации Селективность индексов Уникальные индексы и ограничения Индексы и неравенства Индексы и преобразования столбцов Индексы и оператор like Использование нескольких индексов Составные индексы Как работают составные индексы? Меньшая селективность Использование индексов для получения данных Покрывающие индексы Избыточные критерии отбора Частичные индексы Индексы и порядок соединений Когда индексы не используются Избегаем использования индекса Почему PostgreSQL игнорирует мой индекс? Не мешайте PostgreSQL делать свое дело Как создать правильные индексы? Создавать или не создавать Какие индексы нужны? Какие индексы не нужны? Индексы и масштабируемость коротких запросов Выводы Глава 6. Длинные запросы и полное сканирование Какие запросы считаются длинными? Длинные запросы и полное сканирование Длинные запросы и соединения хешированием Длинные запросы и порядок соединений Что такое полусоединение? Полусоединения и порядок соединений Подробнее о порядке соединений Что такое антисоединение? Полу- и антисоединения с использованием оператора JOIN Когда необходимо указывать порядок соединения? Группировка: сначала фильтруем, затем группируем Группировка: сначала группируем, затем выбираем Использование операций над множествами Избегаем многократного сканирования Выводы Глава 7. Длинные запросы: дополнительные приемы Структурирование запросов Временные таблицы и общие табличные выражения Временные таблицы Общие табличные выражения (CTE) Представления: использовать или не использовать Зачем использовать представления? Материализованные представления Создание и использование материализованных представлений Обновление материализованных представлений Создавать материализованное представление или нет? Нужно ли оптимизировать материализованные представления? Зависимости Секционирование Параллелизм Выводы Глава 8. Оптимизация модификации данных Что такое DML? Два способа оптимизации модификации данных Как работает DML? Низкоуровневый ввод-вывод Влияние одновременного доступа Модификация данных и индексы Массовые обновления и частые обновления Ссылочная целостность и триггеры Выводы Глава 9. Проектирование имеет значение Проектирование имеет значение Зачем использовать реляционную модель? Типы баз данных Модель «сущность–атрибут–значение» Модель «ключ–значение» Иерархическая модель Лучшее из разных миров Гибкость против эффективности и корректности Нужна ли нормализация? Правильное и неправильное использование суррогатных ключей Выводы Глава 10. Разработка приложений и производительность Время отклика имеет значение Всемирное ожидание Показатели производительности Потеря соответствия Дорога, вымощенная благими намерениями Шаблоны разработки приложений Проблема списка покупок Интерфейсы Добро пожаловать в мир ORM В поисках более подходящего решения Выводы Глава 11. Функции Создание функций Встроенные функции Пользовательские функции Знакомство с процедурным языком Долларовые кавычки Параметры и возвращаемое значение Перегрузка функций Выполнение функций Как происходит выполнение функций Функции и производительность Как использование функций может ухудшить производительность Могут ли функции улучшить производительность? Функции и пользовательские типы Пользовательские типы данных Функции, возвращающие составные типы Использование составных типов с вложенной структурой Функции и зависимости типов Управление данными с помощью функций Функции и безопасность Как насчет бизнес-логики? Функции в системах OLAP Параметризация Отсутствие явной зависимости от таблиц и представлений Возможность выполнять динамический SQL Хранимые процедуры Функции, не возвращающие результат Функции и хранимые процедуры Управление транзакциями Обработка исключений Выводы Глава 12. Динамический SQL Что такое динамический SQL Почему в Postgres это работает лучше Что с внедрением SQL-кода? Как использовать динамический SQL в OLTP-системах Как использовать динамический SQL в системах OLAP Использование динамического SQL для гибкости Использование динамического SQL в помощь оптимизатору Обертки сторонних данных и динамический SQL Выводы Глава 13. Как избежать подводных камней объектно-реляционного отображения Почему разработчикам приложений нравится NORM Сравнение ORM и NORM Как работает NORM Детали реализации Сложный поиск Обновления Вставка Обновление Удаление Почему бы не хранить JSON? Прирост производительности Совместная работа с разработчиками приложений Выводы Глава 14. Более сложная фильтрация и поиск Полнотекстовый поиск Многомерный и пространственный поиск Обобщенные типы индексов PostgreSQL Индексы GiST Индексы для полнотекстового поиска Индексирование очень больших таблиц Индексирование JSON и JSONB Выводы Глава 15. Полный и окончательный алгоритм оптимизации Основные шаги Пошаговое руководство Шаг 1. Короткий запрос или длинный? Шаг 2. Короткий запрос Шаг 3. Длинный запрос Шаг 4. Инкрементальные обновления Шаг 5. Неинкрементальный длинный запрос Но подождите, это еще не все! Выводы Заключение Предметный указатель
Similar books
PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries
2021 · PDF
Основы технологий баз данных
2019 · PDF
Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique
2025 · PDF
Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная
2022 · PDF
Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание
2021 · PDF
Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.) =: Archaeological Cultures of Siberia in the context of Cross-cultural contacts in Eurasia: dedicated to the 300th anniversary of the first scientific archaeological excavations in Siberia (1722) : материалы Международной археологической конференции молодых исследователей "Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.)" (Новосибирск, 21-25 ноября 2022 г.)
2022 · PDF
Трешниковские чтения - 2023. Современная географическая картина мира и технологии географического образования =: Treshnikov readings - 2023. Modern geographical global picture and technology of geographic education : материалы Всероссийской научно-практической конференции с международным участием, посвящённой памяти знаменитого российского океанолога, исследователя Арктики и Антарктики, академика Алексея Фёдоровича Трёшникова и 60-летию Ульяновского областного отделения Всероссийской общественной организации "Русское гаографическое общество" (13 апреля 2023)
2023 · PDF
Управление объектами интеллектуальной собственности. Искусство изобретать: учебник для обучающихся по направлениям подготовки 23.00.00 , направлениям подготовки 23.03.01 "Технология транспортных процессов", уровень образования-"бакалавриат", 23.03.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования-"бакалавриат", 23.04.01 "Технология транспортных процессов", уровень образования- "магистратура", 23.04.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования- "магистратура"
2022 · PDF