Об авторах
От редактора
Предисловие
Цель книги
Что вы изучите
Как читать эту книгу
Благодарности
1. Основные принципы
1.1. Значение принципов
1.2. Пять основных принципов
1.2.1. Мыслите глобально, исправляйте локально
1.2.2. Разделение устраняет "узкие места"
1.2.3. Начальные издержки велики, текущие издержки незначительны
1.2.4. Разместите на сервере то, что должно на нем располагаться
1.2.5. Будьте готовы к компромиссам
1.3. Основные принципы и знания
2. Внутренняя настройка
2.1. Цель этой главы
2.2. Блокировка и управление параллелизмом
2.2.1. Вопросы корректности
2.2.2. Настройка блокировок
2.3. Подсистема журнализации и восстановления
2.3.1. Принципы восстановления
2.3.2. Настройка подсистемы восстановления
2.4. Анализ операционной системы
2.4.1. Планирование
2.4.2. Буфер базы данных
2.4.3. Сколько памяти необходимо
2.4.4. Уровень мультипрограммирования
2.4.5. Файлы: размещение на диске и доступ
2.5. Настройка оборудования
2.5.1. Настройка подсистемы хранения
2.5.2. Улучшение аппаратной конфигурации
3. Настройка индексов
3.1. Цель этой главы
3.2. Типы запросов
3.3. Типы ключей
3.4. Структуры данных
3.4.1. Структуры, поддерживаемые системами баз данных
3.4.2. Структуры для хранения данных в оперативной памяти
3.5. Разреженные или плотные индексы
3.6. Использовать ли кластеризацию
3.6.1. Оценка индексов с кластеризацией
3.6.2. Индексы без кластеризации
3.6.3. Составные индексы
3.7. Соединения, внешние ключи, ограничения и индексы
3.8. Избегайте индексации небольших таблиц
3.9. Резюме: организация таблиц и выбор индексов
3.10. Распределение индексов "горячей" таблицы
3.11. Общие проблемы и загрузка индексов
4. Настройка реляционных систем
4.1. Цель этой главы
4.2. Схема таблицы и нормализация
4.2.1. Предварительные определения
4.2.2. Некоторые схемы предпочтительнее
4.2.3. Нормализация на примерах
4.2.4. Практический способ проектирования отношений
4.2.5. Проверка функциональных зависимостей
4.2.6. Настройка нормализованных схем
4.2.7. Настройка денормализованных схем
4.3. Кластеризация двух таблиц
4.4. Поддержка составных атрибутов
4.5. Размещение записей
4.6. Настройка запросов
4.6.1. Сокращение использования DISTINCT
4.6.2. Повторное составление вложенных запросов
4.7. Триггеры
4.7.1. Использование триггеров
4.7.2. Производительность триггеров
5. Общение с внешним миром
5.1. Связь с окружающей средой
5.2. Механизмы "клиент - сервер"
5.3. Объекты, прикладные пакеты и производительность
5.3.1. Остерегайтесь небольших объектов
5.3.2. Остерегайтесь средств разработки приложений
5.4. Настройка интерфейса приложения
5.4.1. Избегайте взаимодействия с пользователем во время транзакции
5.4.2. Минимизируйте количество контактов между приложением и сервером базы данных
5.4.3. Получайте только нужные столбцы
5.4.4. Получайте только нужные строки
5.4.5. Минимизируйте количество компиляций запроса
5.5. Загрузка большого объема данных
5.6. Доступ к гетерогенным базам данных
6. Примеры с Уолл-стрит
6.1. Как преодолеть полиномиальность?
6.2. Выполняйте проверку целостности данных во время ввода
6.3. Распределенная среда и гетерогенность
6.3.1. Взаимодействие с другими базами данных
6.3.2. Глобальные системы
6.3.3. "Обобществленное" управление соединениями в распределенной среде
6.4. Пространственно ? временной компромисс в архивных запросах
6.5. Разбиение как средство упрощения глобальной торговли
6.6. Нужен ли индекс с кластеризацией?
6.7. Остерегайтесь оптимизации
6.8. Планирование аварий и производительность
6.9. Поддерживайте актуальность условно ? постоянных данных
6.10. Удаления и внешние ключи
6.11. Зачем применять разделение: угроза значимости ключей
6.12. Проблема времени
6.12.1. Текущая стоимость
6.12.2. Регулярные временные ряды и статистика
6.12.3. Нерегулярные временные ряды и частотный анализ
6.12.4. Два момента времени
6.12.5. Что делать со временем
7. Устранение неполадок
7.1. Введение
7.1.1. Подход на основе цепочек потребления
7.1.2. Три вопроса
7.2. Как производить сбор информации: инструменты
7.2.1. Блоки объяснения плана запроса
7.2.2. Мониторы производительности
7.2.3. Мониторы событий
7.2.4. Что теперь?
7.3. Запросы из преисподней
7.3.1. Поиск "подозрительных" запросов
7.3.2. Анализ плана доступа запроса
7.3.3. Профилирование выполнения запроса
7.4. Удовлетворительно ли функционирует СУБД?
7.4.1. Дисковая подсистема
7.4.2. Менеджер (кэш ? памяти) буфера
7.4.3. Подсистема журнализации
7.4.4. Подсистема блокировки
7.5. Получает ли СУБД все, что ей нужно?
7.5.1. Проверка процессора
7.5.2. Проверка дисков и дисковых контроллеров
7.5.3. Проверка памяти
7.5.4. Проверка сети
7.6. Заключение
8. Настройка приложений электронной коммерции
8.1. Цель
8.2. Архитектура систем электронной коммерции
8.3. Настройка архитектуры электронной коммерции
8.3.1. Кэширование
8.3.2. Организация связного пула
8.3.3. Индексация
8.4. Пример: портал сравнения магазинов
8.5. Кратко о планировании емкости
8.5.1. Основы планирования емкости
8.5.2. Что приобретать
9. Джо Селко о хранилищах данных: подходы, удачи и просчеты
9.1. Первые шаги
9.2. Забудьте, чему вас учили старшие
9.3. Построить хранилище трудно
9.4. Практические результаты
9.4.1. Wal ? Mart
9.4.2. Supervalu
9.4.3. Harrah\'s
10. Настройка хранилищ данных
10.1. Чем отличаются хранилища данных
10.1.1. Применение хранилищ данных
10.1.2. Технологии организации хранилищ данных
10.2. Настройка систем управления взаимодействием с заказчиками
10.3. Настройка интегрированных хранилищ данных
10.4. Выбор продукта
Приложение А. Базы данных реального времени
А.1. Краткий обзор
А.2. Подход на основе машины с дублированным состоянием
Приложение В. Разбиение транзакций
В.1. Допущения
В.2. Корректные разбиения
В.3. Поиск наилучшего разбиения
В.4. Алгоритм оптимального разбиения
В.5. Применение в распространенных системах баз данных
В.5.1. Разбиение и изоляция "мгновенного снимка"
В.6. Работы по данной теме
Приложение С. Временные ряды в финансовой сфере и не только
С.1. Установка базы данных с поддержкой временных рядов
С.2. FAME
С.3. S ? Plus
С.4. SAS
С.5. KDB
С.6. Oracle 8i Time Series
С.7. То, чего вы хотите от временных рядов
С.8. Поиск данных о временных рядах
Приложение D. Анализ планов доступа
D.1. Операторы доступа к данным
D.2. Операторы описания структуры запроса
D.3. Вспомогательные операторы
Приложение Е. Параметры конфигурации
Е.1. Oracle
Е.2. SQL Server
Е.3. DB2 UDB
Словарь
Предметно-именной указатель