Н60 |
Ниемек, Д. Р. Oracle9i. Оптимизация производительности. Советы и методы [Текст] / Д. Р. Ниемек ; пер. с англ. Сидорова В. – М. : Лори, 2007. – 726 с. : ил. – 2000 экз.
Содержание
Введение xviii
ГЛАВА 1. Введение в новые свойства Oracle9i (для администраторов БД
и разработчиков) 1
Новые административные свойства Огас1е9i 2
Информация о миграции 3
SVRMGRL и Connect Internal Desupport 3
Повышение безопасности, связанное с Database Creation Assistant
и учетной записью SYS 3
Файлы серверных параметров (SPFILE) 4
Автоматическое управление отменой 5
Возобновляемое назначение пространства 5
Временные табличные пространства по умолчанию 6
Файлы, управляемые Oracle 6
Управление динамической памятью 7
Поддержка нескольких размеров блока в базе данных 8
Разделение курсора 9
Самонастройка PGA 10
Оперативное переопределение таблиц 10
Прочие административные свойства 10
Новые архитектурные свойства Oracle9i 11
Новые возможности и свойства разделения 11
Извлечение метаданных объекта 12
Автоматическое управление пространством сегментов 12
Новые свойства индексации 13
Новое свойство организации информационных Хранилищ в 0гасіе9i 14
Внешние таблицы 15
Ограничения на представления 15
Команды INSERT для нескольких таблиц 15
Новые свойства SQL и PL/SQL в Oracle9i 16
Ассоциативные массивы 16
Операторы и выражения Oracle CASE 17
Команда Oracle MERGE 18
Поддержка соответствия ANSI/ISO SQL 1999 18
Прочие свойств SQL и PL/SQL 18
Новые свойства резервного копирования и восстановления в Oгасіе9i 21
Восстановление после ошибки быстрого запуска (с временным критерием) 21
Обращение с нарушением последовательности действий 21
Новые свойства RMAN 22
Новые свойства Log Miner 23
0racle9i Data Guard 23
Real Application Clusters (RAC) 24
Параллельные базы данных 24
Архитектура Oracle RAC 25
Внутренняя работа системы Oracle RAC 28
Обработка SCN 30
Заключение 32
Обзор советов 32
Библиография 33
ГЛАВА 2. Основные принци пыпостроения индексов
(для начинающих разработчиков и администраторов БД) . 34
Основные положения, связанные с индексами 35
Сцепленные индексы 36
Oracle ROWID 37
Подавление индексов 38
Операторы NOT EQUAL (<>, !=) 38
IS NULL или IS NOT NULL 39
Использование функций 40
Сравнение разных типов данных 40
Избирательность . 41
Фактор кластеризации 41
Двоичная высота 43
Использование гистограмм 44
Быстрые полные просмотры 45
Просмотр с пропусками 46
Типы индексов 47
Индексы Ь-дерева 47
Битовый индекс 48
Хеш-индексы 50
Таблицы с индексной организацией 52
Индексы обратного ключа 52
Индексы на основе функции 53
Разделенные индексы 54
Быстрое восстановление индекса 56
Обзор советов 57
Библиография 59
ГЛАВА 3. Дисковый ввод/вывод и фрагментация (для администраторов БД) 60
Использование дисковых массивов 61
Доступные уровни RAID . 61
Упрощение установки и обслуживания 62
Подходит ли дисковый массив для круглосуточного магазина 63
Вопросы стоимости 63
Распределение основных файлов данных по доступным
физическим дискам 63
Сохранение файлов данных и индексов в разных местах 64
Предотвращение конкуренции из-за дискового ввода/вывода 65
Уравновешивание файлового ввода/вывода путем
перемещения файлов данных 67
Использование локально управляемых табличных пространств 67
Создание табличного пространства как локально управляемого 68
Перемещение табличных пространств, управляемых словарем,
в локально управляемые 69
Просмотр информации о файле/табличном пространстве
с помощью Enterprise Manager 70
Предотвращение дисковой конкуренции с помощью разделов 70
Получение дополнительной информации о разделах 73
Другие типы разделов 74
Другие опции разделения 77
Применение индексного разделения 80
Экспорт разделов 81
Устранение фрагментации 81
Правильный размер экстента 83
Создание нового табличного пространства и перемещение в него данных. 83
Экспорт и последующий повторный импорт таблицы 85
Предотвращение формирования цепочки с помощью правильного
задания процентов 86
Перестройка базы данных 87
Управление отменой 89
Выявление проблем, возникших из-за размера файла журнала БД 90
Определение размера журналов и интервала контрольной точки 91
Увеличение шансов на восстановление: фиксация после каждого пакета 93
Использование сегментов отката 93
Предотвращение конкуренции среди сегментов отката 94
Контроль ожидания и конкуренции сегментов отката 94
Увеличение сегментов отката 94
Изоляция больших транзакций в собственных сегментах отката 94
Использование упрощенного подхода: Табличное пространство отмены 96
Контроль пространства UNDO . 97
Удаление проблемных сеансов 97
Сортировка в памяти для уменьшения дискового ввода/вывода 98
Наличие нескольких управляющих файлов на разных дисках и контроллерах 100
Улучшение ввода/вывода для данных с интенсивными операциями записи
с помощью прозрачных устройств 100
Преимущества использования прозрачных устройств 100
Недостатки использования прозрачных устройств 101
Другие предостережения и советы в отношении дискового ввода/вывода 101
Рассмотрение проблем на стадиях планирования 102
Обзор советов 102
Библиография 104
ГЛАВА 4. Оптимизация базы даиньи с помощью параметров инициализации
(для администраторов БД) 105
Идентификация ключевых параметров init.ora 106
Изменение файла init.ora без рестарта 106
Просмотр параметров init.ora с помощью Enterprise Manager. 108
Повышение Производительности путем оптимизации DB_CACHE_SIZE 108
Использование V$DB_CACHE_AOVICE при оптимизации DB_CACHE_SIZE 110
Поддержание коэффициента попадания кэша данных на уровне
более 95% 111
Контроль представления V$SQLAREA для поиска медленных запросов 111
Настройка DB_BLOCK_SIZE, отражающая размер операций чтения данных. 116
Оптимизация SHARED_POOU_SIZE для оптимальной производительности 117
Использование нескольких буферных пулов Oracle 127
Оптимизация PGA_AGGREGATE_TARGET для оптимального
использования памяти 129
Изменение размера SGA во избежание листания и подкачки 131
OPTIMIZER_MODE: Оптимизация, основанная на стоимости
или на правилах 132
Создание достаточного числа диспетчеров 133
25 важных параметров инициализации 134
Отыскание недокументированных параметров init.ora 136
Стандартный сервер 137
Моделирование стандартного сервера 137
Обзор советов 139
Библиография 140
ГЛАВА 5. ENTERPRISE MANAGER и TUHWG PACK (для администраторов БД
и разработчиков) 141
Enterprise Manager Console 142
Папка Instance 142
Управление экземпляром - Окно Status 143
Управление экземпляром - Опции Startup 143
Управление экземпляром - Параметры инициализации 143
Управление экземпляром - Рассмотрение отдельного сеанса 144
Управление экземпляром -Mismory Advisors 146
Папка Schema 146
Управление схемой -Просмотр определенных таблиц 146
Управление схемой - Просмотр определенных индексов 148
Управление схемой - Просмотр информации SYS 148
Управление схемой-Просмотр модулей, процедур и триггеров 150
Папка Security 150
Управление безопасностью - Создание профиля 151
Папка Storage 153
Oracle SQL Scratchpad и SQL* Plus Worksheet 154
Performance Manager 156
Performance Manager - Диаграмма обзора состояния базы данных 156
Performance Manager-Коэффициент попадания буферного кэша 157
Performance Manager-Коэффициент попадания библиотечного кэша 159
Performance Manager-Коэффициент попадания кэша словаря данных 159
Performance Manager - Область SQL. 161
Performance Manager - Коэффициент попадания сортировок в памяти 161
Performance Manager - Скорость системного ввода/вывода 161
Performance Manager - Информация об экземпляре базы данных 162
Performance Manager - Создание своих собственных диаграмм 162
Performance Manager - Списки диаграмм и сеансов 165
Oracle Tuning Pack - SQL Analyze 170
SQL Analyze -EXPLAIN PLAN 170
SQL Analyze - Статистика выполнения 171
SQL Analyze - Сравнение различных планов 172
SQL Analyze - Мастер оптимизации 174
Мастер оптимизации индексов 176
Oracle Tuning Pack - Oracle Expert 177
Oracle Expert-Работа над схемой 177
Oracle Expert - Задание правил сеанса оптимизации 178
Oracle Expert-Внесение изменений и измерение степени воздействия 179
Oracle Expert - Изучение рекомендаций 180
Oracle Expert - Подробные сведения о.рекомендациях 180
Oracle Expert - Рекомендуемые изменения для системы в целом 182
Oracle Tuning Pack - Карта табличного пространства 182
Отчет об анализе, генерируемый Oracle Expert. 182
Генерация отчетов о воздействии на электронный бизнес 184
Генерация отчетов на уровне сервиса 184
Оценка исправности приложения 184
Обзор советов 185
Библиография 189
ГЛАВА 6. Использование EXPLAIN, TRACE, TKPROF и STORED OUTLINES
(для администраторов БД и разработчиков) 190
Утилита TRACE 191
Простые шаги для использования TRACE с простым запросом 191
Разделы вывода из утилиты TRACE 195
Более сложный вывод TKPROf 197
Исследование вывода TKPROF 198
Использование только EXPLAIN PLAN 200
EXPLAIN PLAN - Чтение сверху вниз или снизу вверх 203
Чтение EXPLAIN PLAN 203
Еще один метод получения вывода EXPLAIN PLAN: формирование
древовидной структуры 208
Еще один пример с использованием метода дерева 209
Трассировка/создание EXPLAIN для проблемных запросов
в программах разработчика 211
Важные столбцы в таблице PLANJTABLE 212
Полезные модули, предоставляемые Oracle 214
Параметры INIT.ORA для недокументированной TRACE 214
Использование хранимых схем 216
Обзор советов 222
Библиография
ГЛАВА 7. Стандартный синтаксис инструкций (для администраторов БД
и разработчиков) 225
Самые распространенные инструкции 226
Доступные инструкции и группировки 228
Определение инструкции 230
Указание нескольких инструкций 230
Использование псевдонима 231
Использование инструкций 231
Инструкция CHOOSE 231
Инструкция RULE . . . 232
Инструкция FIRST_ROWS 233
Инструкция ALL_ROWS 234
Инструкция FULL . 234
Инструкция INDEX 235
Инструкция NOJNDEX 236
Инструкция INDEXJOIN 237
Инструкция AND_EQUAL 237
Инструкция INDEX_COMBINE 238
Инструкция INDEXJK_ASC 238
Инструкция INDEX_DESC 239
Инструкция INDEX_FFS 239
Инструкция ORDERED 239
Инструкция LEADING 240
Инструкция ORDERED_PREDICATES 241
Инструкция ROWID 242
Инструкция NO_EXPAND 243
Инструкция DRIVING_SITE 243
Инструкция USE_MERGE 244
Инструкция USE_NL 245
Инструкция USE_HASH 245
Инструкция PUSH.J5UBQ 246
Инструкция PARALLEL 247
Инструкция NOPARALLEL 248
Инструкция APPEND 248
Инструкция NOAPPEND 249
Инструкция CACHE 249
Инструкция NOCACHE 249
Инструкция CLUSTER 250
Инструкция HASH 250
Инструкция CURSOR_SHARING_EXACT 251
Проблемы с инструкциями 251
Инструкции с одного взгляда 252
Обзор советов 253
Библиография 255
ГЛАВА 8. Оптимизация запросов (для начинающих администраторов БД
и разработчиков) 256
Обращение к V$SQLAREA и V$SQL 257
Отбор худших запросов из представления V$SQLAREA 257
Отбор худших запросов из представления V$SQL 258
Когда использовать индекс 259
Забыть об индексе 260
Создание индекса 260
Проверка индекса для таблицы. 261
Правильное индексирование 261
Исправление неправильного индекса 262
Индексирование SELECT и WHERE 263
Быстрый полный просмотр 264
"Невероятное" ускорение запросов 265
Кэширование таблицы в памяти 266
Множественные индексы (используйте наиболее избирательный) 267
Слияние индексов 269
Обработка подавленных индексов 269
Индексы на основе функции 270
Понятие "исчерпывающего" OR 271
Функция EXISTS 272
Обзор советов 273
Библиография. 274
ГЛАВА 9. Объединения таблиц и другие продвинутые методы оптимизации 275
Методы объединения 276
Объединения NESTED LOOPS 277
Объединения SORT-MERGE 278
Объединения CLUSTER 279
Объединения HASH 279
Индексные объединения 280
Параметры инициализации объединения таблиц 283
Параметры объединения SORT-MERGE 283
Параметры объединения HASH 284
Сравнение базовых методов объединения 284
Объединение двух таблиц одинакового размера (основано на стоимости) 285
Объединение INDEX из двух таблиц: таблицы одинакового размера
(основанное на стоимости) 288
Принудительное использование определенного метод объединения 290
Исключение записей объединения (потенциальных строк) в объединениях
из нескольких таблиц 293
Объединение большой и маленькой таблиц . 294
Объединение из трех таблиц (основанное на стоимости) 297
Битовые индексы объединения 299
Битовые индексы 299
Оптимизация сторонних программных продуктов 305
Оптимизация распределенных запросов 308
Когда все оптимизировано 310
Дополнительные сведения об оптимизации 311
Real Application Clusters (RAC) 311
Высокий накал Red Hat: Linux делает ход 313
Внешние таблицы 314
Snapshot Too Old: проблема в коде разработчика 318
Set Event для дампа каждого ожидания 319
Блокировка дампов: последнее слово (только для сверхпродвинутых) 320
Оптимизация с помощью простых математических методов 322
Традиционный математический анализ 322
Методика из семи шагов 323
Интерпретация моделей 329
Выводы из математических методов 334
Дополнительные математические методы: применение теории управления 336
Обзор советов 345
Библиография 347
ГЛАВА 10, Применение PL/SQL для улучшения производительности
(для администраторов баз данных и разработчиков) 348
Контроль в реальном времени с помощью DBMS_APPLICATION_INFO 349
Регистрация информации о времени в таблице базы данных 351
Уменьшение числа итераций модуля программы PL/SQL и времени итерации 354
Использование ROWID для итеративной обработки 356
Стандартизация типов данных, порядок команд IF и PLSJNTEGER 358
Обеспечение того же типа данных в операциях сравнения 358
Упорядочение условий IF на основании частоты условий 360
Применение типа данных PLSJNTEGER PL/SQL для целочисленных
операций 361
Сокращение обращений к SYSDATE 362
Уменьшение использования функции MOD 364
Закрепление объектов в разделяемом пуле 365
Закрепление (кэширование) команд объектов PL/SQL в памяти 366
Закрепление всех модулей 367
Идентификация объектов PL/SQL, требующих закрепления 367
Использование и изменение DBMS_SHARED_POOLSIZES 368
Обнаружение больших объектов 368
Получение подробной информации об объекте из DBA_OBJECT_SIZE 370
Текущее получение непрерывного пространства в разделяемом пуле 370
Обнаружение недействительных объектов 371
Обнаружение выключенных триггеров 372
Использование таблиц PL/SQL для быстрого просмотра справочных таблиц.373
Обнаружение и оптимизация SQL при использовании объектов 375
Использование компонента времени при работе с типами данных DATE 378
Оптимизация и тестирование PL/SOL 381
Проверка условий местоположения объекта PL/SQL 381
Открытие больших курсоров с помощью сегментов отката 382
Активное управление транзакциями для обработки больших
объемов данных 383
Повышение производительности с помощью временных таблиц базы данных. 385
Встраивание механизма отслеживания пользователя для точного
определения местоположения выполнения 385
Ограничение использования динамического SQL 386
Примеры для начинающих 386
Создание кода PL/SQL 387
Создание процедуры 387
Выполнение процедуры из PL/SQL 388
Создание функции 388
Выполнение функции get_cust_name из SQL 388
Создание пакета 388
Использование PL/SQL в триггере базы данных 389
Обзор советов 389
Библиография 390
ГЛАВА 11, Использование параллелизма для повышения производительности 391
Основы распараллеливания операций 392
Параллельное выполнение команд DML и DDL 393
Параллельное выполнение команд языка DML в Oracle9i. 394
Параллелизм и разделы 394
Интраоперационный и интероперационный параллелизм 395
Примеры интраоперационного и интероперационного параллелизма
(инструкции PARALLEL и NOPARALLEL) 396
Примеры создания таблиц и индексов с учетом распараллеливания 397
Реальный пример распределения данных для эффективного
распараллеливания операций 399
Параллельное выполнение команд 0ML 400
Ограничения при параллельном выполнении команд DML 400
Примеры параллельного выполнения команд DML 401
Мониторинг параллельных операций с помощью \/$-представлений 402
Представление V$PQ_TQSTAT 403
Представление V$PQ_SYSSTAT 4Q3
Представление V$PQ_SESSTAT 405
Использование команд EXPLAIN PLAN и AUTOTRACE для параллельных
операций 406
Настройка параллельного выполнения и параметры инициализации Oracle 9i 411
Параллельная загрузка данных 416
Сравнение производительности и мониторинг параллельных операций 417
Прочие замечания о параллелизме 419
Обзор советов 420
Библиография 422
ГЛАВА 12, \/$-представления (для администраторов баз данных и разработчиков) 423
Создание \/$-представлений и предоставление доступа к нему 424
Подсчет и перечисление всех -\/$ представлений 427
Х$-таблицы, на базе которых строятся \/$-представления 428
Изучение объектов, на базе которых создаются DBA-представления 429
Полезные способы использования \/$-представлений 431
Сводная информация о распределении памяти (V$SGA) 434
Детальная информация о распределении памяти (V$SGASTAT) 434
Получение значений параметров из файла init.ora с помощью
представления V$PARAMETER 435
Нахождение процента попаданий для кэша данных (V$SYSSTAT) 436
Нахождение процента попаданий для словарного кэша (V$ROWCACHE) 437
Нахождение процента попаданий для кэша разделяемых
SQL-запросов и процедур на языке PL/SQL (V$LIBRARYCACHE) 438
Объекты PL/SQL, которые след
|