Рефакторинг SQL-приложений
Стефан Фаро, Паскаль Лерми
Когда поднимается вопрос рефакторинга кода, специалист может быть уверен, что либо возникла серьезная проблема, либо предполагается, что она проявится в ближайшее время. Как правило, при этом известно, что следует улучшить в плане функциональности, но прежде необходимо понять природу проблемы.
В книге делается попытка дать реалистичный и честный обзор методов усовершенствования приложений SQL и определить рациональную концепцию для тактических маневров. Часто рефакторинг напоминает безумный поиск быстрых побед и эффектных усовершенствований, которые можно вписать в бюджет и сохранить голову на плечах. Но разумное и систематическое применение правильных принципов может привести к впечатляющим результатам. Эта книга поможет выработать правильную тактику и оценить перспективы различных решений.
Книга предназначена для профессионалов в области информационных технологий, разработчиков, менеджеров проектов, служб поддержки, администраторов баз данных и специалистов по настройке, которым приходится принимать участие в операциях по спасению приложений со значительным объемом кода управления базами данных.
Издательство: Символ-Плюс, 2009 г.
ISBN 978-5-93286-145-5, 978-0-596-51497-6
Количество страниц: 336.
Содержание книги «Рефакторинг SQL-приложений»:
- 9 Об авторах
- 10 Предисловие
- 20 1. Оценка
- 21 Простой пример
- 25 Настройка SQL, традиционный способ
- 28 Припудривание кода
- 30 Настройка SQL заново
- 30 Рефакторинг, первая точка зрения
- 35 Рефакторинг, вторая точка зрения
- 37 Сравнение и комментарии
- 40 Выбор среди различных подходов
- 42 Оценка возможных выигрышей
- 49 Выяснение, что делает база данных
- 49 Запрос динамических представлений
- 54 Добавление операторов в файл трассировки
- 56 Использование файлов трассировки
- 58 Анализ собранного материала
- 61 2. Проверка работоспособности
- 62 Статистика и проблемы с данными
- 62 Доступная статистика
- 67 Ловушки для оптимизатора
- 67 Экстремальные значения
- 69 Временные таблицы
- 69 Обзор индексирования
- 71 Краткий обзор типа индексации
- 73 Детальное исследование
- 79 Индексы, которые нарушают правила
- 79 Индексы на основе битовых карт
- 80 Кластерные индексы
- 81 Индексы по выражениям
- 81 Синтаксический разбор и связующие переменные
- 82 Как определить проблемы синтаксического разбора
- 84 Оценка потерь производительности из-за синтаксического разбора
- 88 Разрешение проблем синтаксического анализа
- 90 Что если одно значение должно быть привязано несколько раз?
- 91 Разрешение проблем синтаксического анализа для ленивых
- 92 Правильный подход к разрешению проблем синтаксического анализа
- 94 Обработка списков в подготовленных операторах
- 95 Передача списка как одной переменной
- 98 Пакетная обработка списков
- 99 Использование временной таблицы
- 100 Групповые операции
- 102 Управление транзакциями
- 105 3. Пользовательские функции и представления
- 106 Пользовательские функции
- 107 Усовершенствование чисто вычислительных функций
- 110 Дальнейшее усовершенствование функций
- 118 Усовершенствование функций поиска
- 119 Пример 1: календарная функция
- 127 Пример 2: функция конвертирования валют
- 135 Усовершенствование функций против переписывания операторов
- 136 Представления
- 136 Для чего нужны представления
- 137 Сравнение производительности со сложными представлениями и без них
- 144 Рефакторинг представлений
- 148 4. Концепция тестирования
- 149 Генерирование тестовых данных
- 150 Размножение строк
- 151 Использование функций генерирования случайных значений
- 152 SQL Server и функции генерирования случайных значений
- 156 Подгонка под существующие распределения
- 160 Генерирование большого числа строк
- 164 Целостность на уровне ссылок
- 165 Генерирование случайного текста
- 167 Сравнение альтернативных версий
- 167 Блочное тестирование
- 168 Приближенное сравнение
- 169 Сравнение таблиц и результатов
- 169 Что сравнивать
- 170 Примитивные способы сравнения
- 172 Сравнение SQL, версия из учебника
- 174 Сравнение SQL, версия получше
- 175 Сравнение контрольных сумм в SQL
- 182 Ограничения сравнения
- 183 5. Рефакторинг операторов
- 184 Планы исполнения и директивы оптимизатора
- 190 Анализ медленного запроса
- 190 Идентификация базового запроса
- 192 Приведение в порядок фразы from
- 195 Рефакторинг базового запроса
- 196 Анализ составных частей
- 196 Устранение повторяющихся шаблонов
- 203 Игры с подзапросами
- 203 Подзапросы в списке select
- 206 Подзапросы во фразе from
- 206 Подзапросы во фразе where
- 209 Ранняя активизация фильтров
- 211 Упрощение условий
- 214 Другие направления оптимизации
- 214 Упрощение агрегатов
- 214 Использование фразы with
- 215 Комбинирование операторов объединения
- 216 Перестроение исходного запроса
- 216 Вложенные циклы
- 217 Соединение слиянием и хеш-соединение
- 219 6. Рефакторинг задач
- 220 SQL-мышление
- 221 Использование SQL там, где SQL работает лучше
- 222 Рассчитывайте на успех
- 225 Реструктуризация кода
- 226 Объединение операторов
- 226 Введение управляющих структур в SQL
- 227 Использование агрегатов
- 228 Использование функции coalesce() вместо if is null
- 229 Использование исключений
- 234 Извлечение всех нужных данных за один прием
- 235 Изменение логики
- 236 Избавление от функции count()
- 244 Избегайте излишеств
- 245 Избавляйтесь от циклов
- 248 Причины использования циклов
- 250 Анализ циклов
- 251 Сомнительные циклы
- 255 7. Рефакторинг потоков и баз данных
- 256 Реорганизация обработки
- 257 Борьба за ресурсы
- 258 Время обслуживания и интенсивность входного потока
- 259 Усиление параллелизма
- 261 Размножение поставщиков услуг на уровне приложения
- 269 Укорачивание критических разделов
- 270 Изолирование опасных зон
- 271 Работа с несколькими очередями
- 278 Параллелизм вашей программы и СУБД
- 281 Потрясая основы
- 283 Сортировка строк
- 286 Разбиение таблиц
- 288 Изменение столбцов
- 288 Изменение содержимого
- 289 Разбиение столбцов
- 290 Добавление столбцов
- 291 Материализация представлений
- 294 8. Как это работает: практика рефакторинга
- 294 Можете ли вы взглянуть на базу данных?
- 296 «Мертвые» запросы
- 298 Все эти быстрые запросы
- 300 Не бывает явно «плохих» запросов
- 301 Пора заканчивать
- 302 A. Сценарии и примеры программ
- 312 B. Инструменты
- 312 Программы mklipsum и lipsum
- 312 Как собрать программы mklipsum и lipsum
- 312 Как использовать программы mklipsum и lipsum
- 315 Roughbench
- 315 Как собрать программу Roughbench
- 315 Как использовать программу Roughbench
- 315 Файл roughbench .properties
- 316 Указание параметров
- 317 Генерирование переменных
- 317 Генерирование целых чисел или чисел с плавающей запятой
- 317 Генерирование дат
- 318 Вывод
- 320 Алфавитный указатель
Инструкция как скачать книгу Стефан Фаро, Паскаль Лерми: Рефакторинг SQL-приложений в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.