Настройка SQL. Для профессионалов
SQL Tuning
Серия: Для профессионалов
Издательство: Питер, 2004 г.
Твердая обложка, 336 стр.
ISBN 5-94723-959-0
Тираж: 4000 экз.
Формат: 70x100/16
рейтинг: 1
+ - −
цена:
4.01 белорусских рублей
Нет на складе
От издателя
В реальных приложениях, работающих с серверами баз данных, перед разработчиками очень часто встает проблема улучшения производительности SQL-запросов. В этой книге детально и на многочисленных примерах описывается метод, позволяющий кардинально повысить скорость выполнения запросов к базам данных. Прочитав книгу, вы сможете не тратить долгие часы на перебор различных вариантов кода, а максимально быстро найти оптимальный способ построения запроса. Метод настройки SQL-запросов не опирается на случайный или итеративный перебор вариантов кода, а основан на четких и понятных правилах, которые достаточно просты для понимания и основаны на принципах работы SQL-серверов. Книга будет полезна разработчикам систем, взаимодействующих с базами данных, и всем интересующимся аспектами работы SQL-серверов.
Содержание
Об авторе
Вступление
Предисловие
Цели этой книги
Аудитория этой книги
Структура книги
Условные обозначения
Комментарии и вопросы
Благодарности
От издательства
1. Введение
Зачем настраивать SQL?
Кто должен настраивать SQL?
Чем может помочь эта книга
Бонус
«Внешние» решения
2. Основы доступа к данным
Кэширование в базе данных
Таблицы
Последовательный рост
Удаление самых старых данных
Удаление данных вне зависимости от возраста
Полное удаление и рост с нуля
Индексы
Индексы в B-деревьях
Стоимость индекса
Редкие объекты базы данных
Таблицы с индексной организацией
Однотабличные кластеры
Многотабличные кластеры
Таблицы с разбиениями
Растровые индексы
Пути доступа для одной таблицы
Полное сканирование таблицы
Индексный доступ к таблицам
Выбор между полным сканированием таблицы и индексным доступом
Вычисление селективности
Селективность фильтра
Селективность условия на диапазоне индекса
Селективность для строк таблицы, полученных при помощи индекса
Комбинирование индексов
Соединения
Типы соединений
Способы обработки соединений
3. Просмотр и интерпретация планов выполнения
Чтение планов выполнения в Oracle
Подготовка
Процесс, лежащий в основе отображения планов выполнения
Практический процесс отображения планов выполнения
Надежные планы выполнения
Ненадежные планы выполнения
Сложные планы выполнения
Чтение планов выполнения в DB2
Подготовка
Процесс, лежащий в основе отображения планов выполнения
Практический процесс отображения планов выполнения
Надежные планы выполнения
Ненадежные планы выполнения
Сложные планы выполнения
Чтение планов выполнения в SQL Server
Отображение планов выполнения
Как интерпретировать план
Интерпретация плана выполнения
Интерпретация ненадежных планов выполнения
Сложные планы выполнения
4. Управление планами выполнения
Универсальные техники управления планами
Использование правильного индекса
Запрещение использования неправильных индексов
Использование желаемого порядка соединения
Запрещение соединения в неправильном порядке
Выбор порядка выполнения для внешних запросов и подзапросов
Предоставление стоимостному оптимизатору хороших данных
Обман стоимостного оптимизатора плохими данными
Управление планами в Oracle
Управление выбором оптимизатора в Oracle
Управление синтаксическими планами выполнения в Oracle
Управление стоимостными планами выполнения в Oracle
Управление планами в DB2
Подготовка к оптимизации в DB2
Выбор уровня оптимизации
Изменение запроса
Управление планами в SQL Server
Подготовка к оптимизации в SQL Server
Изменение запроса
Примеры подсказок
Использование FORCEPLAN
5. Диаграммное изображение простых запросов SQL
Зачем нужен новый метод?
Полные диаграммы запросов
Информация, отображаемая в диаграммах запросов
Что не входит в диаграммы запросов
Когда диаграммы запросов помогают лучше всего
Абстрактная демонстрация использования диаграмм запросов
Создание диаграмм запросов
Более сложный пример
Сокращения
Интерпретация диаграмм запросов
Упрощенные диаграммы запросов
Упражнения
6. Выбор наилучшего плана выполнения
Надежные планы выполнения
Обычный эвристический порядок соединения
Простые примеры
Порядок 8-стороннего соединения
Окончательное решение для 8-стороннего соединения
Сложное 17-стороннее соединение
Особый случай
Решение для Oracle
Решение специфичной проблемы для других серверов
Сложный пример
Специальные правила для особых случаев
Безопасные декартовы произведения
Детальные коэффициенты фильтрации, близкие к 1,0
Коэффициенты соединения, меньшие 1,0
Близкие коэффициенты фильтрации
Случаи, когда нужно выбрать соединения хэшированием
Упражнение
7. Диаграммное изображение и настройка сложных SQL-запросов
Необычные диаграммы соединений
Графы циклических соединений
Несвязные диаграммы запросов
Диаграммы запросов с несколькими корневыми узлами
Соединения без первичных ключей
Соединения вида «один к одному»
Внешние соединения
Запросы с подзапросами
Изображение запросов с подзапросами на диаграммах
Настройка запросов с подзапросами
Запросы с представлениями
Диаграммное изображение запросов, использующих представления
Настройка запросов с представлениями
Запросы с операциями над множествами
Упражнение
8. Почему метод диаграмм работает
Аргументы в пользу вложенных циклов
Выбор ведущей таблицы
Выбор следующей таблицы для соединения
Объяснение различной стоимости считывания строки
Объяснение преимуществ от поздних соединений
Когда следует выбирать ранние соединения с узлами наверху
Резюме
9. Особые случаи
Внешние соединения
Шаги порядка оптимизации нормального внешнего соединения
Пример
Совмещенные соединения и фильтрующие индексы
Отсутствующие индексы
Соединения, не прошедшие фильтрацию
Неразрешимые проблемы
10. Решения сложных проблем
Когда очень быстро — это еще недостаточно быстро
Как избежать повторяющихся запросов при помощи кэширования
Объединенные запросы
Слияние повторяющихся запросов с предыдущим запросом
Запросы, которые возвращают слишком много данных
Объемные оперативные запросы
Объемные пакетные отчеты
Агрегационные данные многих детальных записей
Промежуточные процессы обрабатывают слишком много строк
Настроенные запросы, которые медленно возвращают несколько строк
Почему иногда запросы считывают много строк, а возвращают лишь несколько
Оптимизация запросов с распределенными фильтрами
Приложение А. Решения задач
Решения для задач из Главы 5
Упражнение 1
Упражнение 2
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Решение для задачи из главы 6
Решение для задачи из главы 7
Приложение Б. Полный и непрерывный процесс
Сокращение запроса до диаграммы запроса
Создание скелета запроса
Создание упрощенной диаграммы запроса
Создание полной диаграммы запроса
Решение диаграммы запроса
Проверка планов выполнения
Получение плана выполнения в Oracle
Получение плана выполнения в DB2
Получение плана выполнения в SQL Server
Изменение базы данных для получения лучшего плана
Изменение SQL-кода для получения хорошего плана
Изменение приложения
Взгляд в будущее
Глоссарий
АЛФАВИТНЫЙ УКАЗАТЕЛЬ
Читать дальше…
Свернуть
Лучшие книги этого раздела
Сортировка: по рейтингу, по дате