|
Практическое руководство по оптимизации времени отклика
|

|
Кэри Миллсап
Джефф Хольт
Oracle.
Оптимизация производительности
Санкт-Петербург, Издательство “Символ-Плюс” (http://www.symbol.ru), 464 стр., 70x100/16, 2006, тир.2000, ISBN 5-93286-078-2, переводчик П.Шер, научный редактор О.Летаев.
Аннотация от издательства: http://www.symbol.ru/catalog/book/357314
Оригинал: Optimizing Oracle Performance, by Cary Millsap and Jeff Holt. O'REILLY, 2003, ISBN: 0-596-00527-X |
"На каждый вопрос, задаваемый учителем, существует два ответа.
Один из них правильный, а второй - тот, которого ждет учитель.
Надеемся, что ты будешь знать оба."
Ван и Ширли Миллсап, родители, провожая юного Кэри в школу.
"Практическое руководство по оптимизации времени отклика" - такой смелый, даже несколько вызывающий надзаголовок несет эта книга. Действительно, какими бы важными ни были обязанности администратора базы данных (АБД): резервирование и восстановление (к счастью, не часто, к несчастью, всегда неожиданно), управление пользователями и ресурсами, мониторинг производительности и своевременная установка патчей и новых версий, консультирование пользователей и разработчиков,… - самым главным, самым как бы спортивным для себя, а иногда и самым интересным каждый АБД считает уменьшение (оптимизацию) времени отклика базы данных на запросы пользователей. Доказанное уменьшение времени отклика всегда считалось искусством, творческой работой, показателем уровня квалификации АБД в сочетании с его способностью убеждения разработчиков и пользователей приложений в возможности и необходимости улучшения их системы обработки данных. И не даром сами АБД часто подшучивают, что оптимизация производительности базы данных Oracle является чем-то сродни шаманству или черной магии. Поэтому появление такой книги, как “Практическое руководство по оптимизации времени отклика”, должно было бы вызвать огромное воодушевление среди АБД, и это руководство должно было быть немедленно применено в повсеместной практике.
Однако, что-то не так. Дело в том, что эта книга, несмотря на название и надзаголовок, НЕ содержит практических скриптов и на конкретных примерах рекомендаций по повышению производительности базы данных. Кэри Миллсап пишет: “Книга описывает определенный метод оптимизации производительности системы Oracle, но не останавливается на этом. Предписанный метод оптимизирует производительность самого процесса повышения производительности. Цель этой книги не в том, чтобы заработала быстрее какая-то одна система, а в том, чтобы вы могли быстрее и эффективнее оптимизировать работу любой системы… Книга уделяет более пристальное внимание диагностике проблемы производительности, а не ее решению.” То есть, книгу можно с полной уверенностью отнести к очень редкому в отечественной компьютерной литературе философскому жанру. Это – книга-рассуждение, книга для спокойного чтения и внимательного переосмысления собственного понимания СУБД Oracle. “Я посвящаю эту книгу каждому менеджеру, готовому слушать и сидящему на мягком диване” – такое посвящение дал ей один из ее авторов Джефф Хольт. Не даром издательство O'REILLY выступило с таким предуведомлением: "Уровень подготовки читателей: ВЫСОКИЙ". И редакция OM/RE присоединяется к этой характеристике книги.
Но в чем же состоит основная концепция метода Кэри Миллсап? В самом “сухом” остатке – это правильное и тщательнейшее исследование данных расширенной трассировки отдельных операций и транзакций в целом. Эти данные позволяют узнать, на что тратится время при обработке запросов. По этим данным можно выявить SQL-предложения, оптимизация которых дает наибольший эффект с точки зрения бизнеса (то есть, пользователя!!), а также точки и причины неоправданно большого расходования времени. И вот вся книга посвящена получению и исследованию данных трассировки на высоком научно-техническом уровне.
Для начала Кэри Миллсап формулирует три важных правила оптимизации Oracle:
- по агрегированным данным нельзя восстановить составляющие (подглава “Концентрация на пользовательских операциях”);
- нельзя судить о длительности события по количеству его возникновений (подглава “Концентрация на времени отклика системы”);
- увеличение производительности, достигаемое некоторым усовершенствованием, ограничено потребляемой усовершенствованным компонентом долей общего времени выполнения (подглава “Закон Амдала”).
И собрав воедино эти три принципа технологии оптимизации Oracle Кэри Миллсап выводит “следующее простое правило:
- В первую очередь следует стремиться к уменьшению самой значимой составляющей времени отклика в наиболее критичных для бизнеса операциях.” (стр. 41)
Кто-либо из сейчас читающих эту рецензию разочарованно скажет, что это очевидно и само собой разумеется. Но сила книги Кэри Миллсап именно в том, что в ней доказываются якобы самоочевидные вещи, приобретая научную точность. Анализу и приемам действий с трассовой информацией посвящена вся книга. По традиции наших рецензий мы в Приложении приводим оглавление рассматриваемой книги. Бывает так, что внимательно изучив оглавление, квалифицированный читатель получает больше информации, чем из самой рецензии, хотя мы, рецензенты, надеемся, что наш текст не бесследно проходит мимо читателей. В данном же случае официальное оглавление не полностью раскрывает все богатство этой книги. Поэтому навскидку приведем названия нескольких подглавок, чтобы еще больше привлечь внимание читателей к этой книге: “Время внутри вызова базы данных”, “Время между вызовами базы данных”, “Двойной учет рекурсивного SQL”, “Формулы отсчета времени”, “Слишком много данных – на самом деле их недостаточно”, “Отсутствие согласованности чтения”, “Обнаружение неэффективного SQL”, “Как выявить конкурирующую нагрузку” и т.д. Нельзя же в рецензии переписать всю книгу! :)
Внимательный читатель мог заметить, что в качестве автора мы все время называем только Кэри Миллсап. Действительно, это его авторская книга, и повествование в ней ведется от первого лица. Джефф Хольт выступает оппонентом, как бы сказали средневековые схоласты, в роли “адвоката дьявола”, который заставляет Кэри Миллсап доказывать интуитивно понятные и/или опытным путем полученные данные по оптимизации. Но без его упорного “сопротивления” Хольта сам Миллсап не смог бы создать “высококачественный метод оптимизации производительности Oracle”, но “только исключив из процесса улучшения производительности интуицию, опыт и удачу.” (стр.25) Наверно, именно поэтому Джефф Хольт по праву считается одним из соавторов книги.
Выше мы отметили именно методологический характер книги К.Миллсап. В русскоязычной oracle-ане есть, наверно, только одна книга подобного типа: Д.Энсор, Й.Стивенсон "Oracle: Проектирование баз данных" (К.: Изд.группа BHV, 1999, 558 стр.), [оригинал: Dave Ensor and Jan Stevenson. "Oracle Design" O'Reilly & Associates, Inc., 1997] плюс ее отдельно изданная последняя глава "Oracle8: Рекомендации разработчикам" – те же авторы Д.Энсор и Й.Стивенсон (Изд.группа BHV, 1997, 126 стр.). В давнем обзоре русскоязычной oracle-аны за 2000г. А.Бачин писал “Опус Д.Энсора предназначен для продвинутых консультантов, разработчиков приложений, АБД, которые хотят поговорить и поспорить на своем квалификационном уровне с очень опытным коллегой, узнать его мнение о новых возможностях Oracle, воспользоваться его рекомендациями в стратегических вопросах. Поскольку подобные вопросы непреходящи, эту книгу можно читать не спеша, перечитывать по отдельным главам.” Нам представляется, что эти слова можно с полным на то основанием отнести и к книге К.Миллсап и Дж.Хольта.
Мы очень рады тому, что на полку самых лучших книг русскоязычной oracle-аны рядом с книгами Т. Кайта, Д. Энсора, Р. Нимика встала книга К.Миллсап и Дж.Хольта “Oracle.
Оптимизация производительности”.
И совершенно необходимо отметить еще одно качество этого издания: научное редакторование этой книги выполнил профессиональный oracle-ист Олег Летаев, Oracle Certified Professional. Спасибо, Олег, за прекрасно подготовленную книгу.
Примечание: Используемые в книге скрипты можно найти по адресу http://www.oreilly.com/catalog/optoraclep/
Виктор Абрамов,
научный редактор "Oracle Magazine/Русское Издание"
Анатолий Бачин,
главный редактор “Oracle Magazine/Русское Издание”
Приложение
Оглавление книги "Oracle. Оптимизация производительности":
Вступительное слово редактора - Джонатан Генник (Jonathan Gennick)
Предисловие
- Методика
- Лучший способ оптимизации
"Вы делаете это неправильно"
Требования к хорошему методу
Три важных достижения
Средства анализа времени отклика
Метод R
- Выбор пользовательских операций
Надежность спецификации
Создание хорошей спецификации
Избыточные ограничения в спецификации
- Выбор диагностических данных
О сборе данных
Область данных
Источники диагностических данных в Oracle
Дополнительная информация
- Выбор пути решения задачи
Новый стандарт обслуживания клиентов
Выбор экономически оптимального пути повышения производительности
Анализ диагностических данных
Прогнозирование экономической эффективности проекта
Справочная информация
- Интерпретация данных расширенной трассировки SQL
Знакомство с файлом трассировки
Справочник по данным расширенной трассировки SQL
Учет времени отклика
Эволюция модели времени отклика
Отсчет времени
Опережающее атрибутирование
Подробный анализ файла трассировки
Упражнения
Сбор данных расширенной трассировки SQL
Знакомство с приложением
Включение расширенной трассировки SQL
Поиск файлов трассировки
Устранение ошибок сбора данных
Упражнения
Измерение времени ядром Oracle
Управленпие процессами операционной системы
Измерение времени ядром Oracle
Как программное обеспечение измеряет само себя
Неучтенное время
Влияние измерителя
Двойной учет занятости процессора
Ошибка квантования
Время "невыполнения"
Код ядра Oracle без измерительных средств
Упражнения
Данные фиксированных представлений Oracle
Изъяны данных фиксированных представлений
Справочник по фиксированным представлениям
Полезные запросы к фиксированным представлениям
"Интерфейс ожидания" Oracle
Упражнения
Теория массового обслуживания для специалиста по Oracle
Модели производительности
Массовое обслуживание
Теория массового обслуживания
Модель массового обслуживания M/M/m
Резюме
Упражнения
Реализация
- Работа с профилем ресурсов
Как работать с профилем ресурсов
Как предсказать результат
Как узнать, что работа завершена
Лечение согласно диагнозу
За пределами профиля ресурсов
Компоненты времени отклика
Исключение ненужной работы
Признаки масштабируемости приложения
Учебные примеры
Пример 1: обманчивые общесистемные данные
Пример 2: большие затраты процессорного времени
Пример 3: длительные события SQL*Net
Пример 4: длительные события чтения
Заключение
Приложения
Глоссарий
Греческий алфавит
Оптимизация коэффициента попаданиий в кэш буферов баз данных
Формулы массового обслуживания M/M/m
Ссылки
Алфавитный указатель |