2004 г
Unicenter SQL-Station – еще один путь повышения эффективности работы приложений
Д.
Мендельсон, Корпоративные информационные системы
Статья была опубликована на сайте "Storage
News" и на сайте компании Interface
Когда пользователи программных приложений начинают жаловаться на медленную
их работу и, особенно, когда это начинает отрицательно влиять на бизнес, перед
ИТ специалистами остро встает проблема повышения эффективности работы вычислительных
ресурсов. Самый прямой выход из этого положения - аппаратный апгрейд. Добавление
оперативной памяти, замена процессора и дискового массива на их более быстродействующие
модификации и т.д. почти всегда дают положительный результат. Но самый прямой
выход не всегда является самым правильным и редко - самым эффективным.
Часто, особенно если дело связано с использованием баз данных, медленное
функционирование приложений связано с использованием "неоптимизированного" программного
кода. Любой опытный SQL-программист наверняка сможет привести не один пример
из своей практики, когда изменение программного кода, иногда простая перестановка
параметров SQL-выражения, приводила к заметному ускорению работы программного
приложения.
Таким образом, еще один путь повышения эффективности работы приложений - это
оптимизация программного кода. Но этот путь требует наличия у программистов,
помимо глубоких знаний, еще и большого опыта и даже интуиции. Но не стоит отказываться
от этого пути, если знаний, опыта и интуиции ваших программистов недостаточно
для достижения требуемого результата, потому всегда можно прибегнуть к помощи
специальных программных продуктов. Например, к Unicenter
SQL-Station
- из набора программных продуктов компании Computer
Associates
- Unicenter Database Management Solutions.
Программный комплекс Unicenter Database Management Solutions представляет
собой универсальный набор интегрированных инструментов для широкого диапазона
промышленных СУБД, включая DB2, Oracle, Microsoft
SQL Server и Sybase,
которые позволяют осуществлять непрерывный мониторинг "пестрой" смеси
баз данных, работающих в гетерогенных информационных средах современных предприятий.
Данные мониторинга фильтруются
и коррелируются для выделения факторов, которые оказывают отрицательное влияние
на эффективность функционирования сложных бизнес-приложений. Осуществляя детальные
замеры и выполняя глубокую аналитику баз данных, этот комплекс предоставляет
инструменты выполнения автоматических реакций для предотвращения потенциальных
проблем и обеспечения высокопроизводительного использования баз данных на вашем
предприятии.
Как уже говорилось, Unicenter SQL-Station помогает избежать опасности встраивания
неэффективного программного кода в приложения на этапе их создания или при
модернизации уже существующих на предприятии программных систем. Даже если
написанный вами программный код не содержит явных ошибок, это не гарантирует
оптимальную работу ваших приложений. Исследования показывают, что неоптимизированные
SQL выражения являются причиной от 60 до 80% проблем с производительностью
работы приложений. Unicenter SQL-Station предоставляет возможность формирования
оптимального, эффективного SQL кода, а также идентификации программ, встроенных
SQL выражений и объектов баз данных, которые наиболее отрицательно влияют на
производительность системы. Обеспечивая помощь при создании, тестировании,
отладке и настройке SQL кода, этот продукт может значительно ускорить процесс
создания программных приложений.
Чтобы не быть голословными, давайте рассмотрим пример по отладке Oracle SQL
отрывка с использованием одного из компонентов Unicenter SQL-Station под названием
Plan Analyzer.
Этап I, Анализ. Plan Analyzer функционирует как эксперт, который отвечает
на все ваши вопросы по настройке SQL кода и предоставляет вам план оптимизации
с подробными комментариями, позволяя:
- анализировать план оптимизации в привязке к вашей вычислительной среде;
- выявлять SQL код, который потребляет наибольшее количество ресурсов;
- находить часто используемые запросы, которые манипулируют данными на основе
атрибутов без соответствующих индексов;
- просматривать статистику выполнения кода посредством наглядных графических
презентаций;
- применять усовершенствованные технологии настройки Oracle, такие как "array
binding" и "hints";
- проверять на наличие и исправлять ошибки типа "outer join", "referential" и
выражения, которые могут быть трансформированы.
На рис. 1 изображено окно интерфейса
Unicenter SQL-Station Plan Analyzer. Открыв файл нашего примера, мы видим в
верхней части окна интерфейса наш SQL
код, в центральной части - план выполнения нашего кода при условии использования "Hint
Rule". План состоит из последовательности шагов, имеющих интуитивно понятную
расцветку и комментарии, прочитать которые можно в нижней части окна при выборе
соответствующего шага. В правой части окна можно посмотреть количественные
данные и параметры, связанные с выбранным шагом плана. Данные и параметры объектов
в контексте данного плана можно посмотреть, выбрав закладку "Objects" в
центральной части экрана (рис. 2). Или, выбрав закладку "Execution Stats",
можно увидеть точную количественную и временную статистику выполнения кода
и использовать эти данные для анализа эффективности данного плана выполнения
(рис. 3).
Рис. 1. Интерфейс Unicenter SQL-Station Plan Analyzer. Hint Rule.
Рис. 2. Интерфейс Unicenter SQL-Station Plan Analyzer. Hint All Rows.
Рис.3. Интерфейс Unicenter SQL-Station Plan Analyzer. Execution Stats.
Этап II, Оптимизация-1. Оптимизацию кода мы выполняем, используя технологию
настройки Oracle "hints". Для сравнения результатов использования
различных "hints" мы нажимаем на закладку в верхней части экрана "Hint
All Rows" и получаем новый план (рис. 4), который можем проанализировать
таким же образом, как и предыдущий.
Рис. 4. Интерфейс Unicenter SQL-Station
Plan Analyzer. Hint All Rows.
Проведя предварительный анализ, мы решили создать собственный "Hints
1" и, проделав несложные манипуляции, получили еще один план (рис. 5).
Эти эксперименты продолжились созданием "Hints2" и закончились на "Hints3".
Рис.
5. Интерфейс Unicenter SQL-Station Plan Analyzer. Hints1.
Попытавшись исправить SQL код, мы засомневались в правильности наших действий
и решили их проверить, используя закладку "Check SQL" (рис. 6). В
правой части этого окна отобразились все "некорректные", с точки
зрения логики выполнения, элементы нашей программы.
Рис. 6. Интерфейс Unicenter
SQL-Station Plan Analyzer. Check SQL.
Попытавшись исправить SQL код, мы засомневались в правильности наших действий
и решили их проверить, используя закладку "Check SQL" (рис. 6). В
правой части этого окна отобразились все "некорректные", с точки
зрения логики выполнения, элементы нашей программы.
Этап III, Оптимизация-2. Более глубокий анализ и сравнение эффективности планов
можно проводить, используя удобную графическую или табличную формы. На рис.
7, 8 отображены диаграммы, которые наглядно показывают разницу (или отсутствие
таковой) в количественных (рис. 7) и временных (рис. 8) характеристиках выполнения
кода по всем нашим планам (название плана появляется на экране при подведении
указателя мышки к соответствующему столбцу диаграммы).
Рис. 7. Окно SQL Comparison. Plan Operation.
Рис. 8. Окно SQL Comparison. Execution Stats.
Таким образом, последовательно внося изменения в наш SQL код и анализируя
с помощью Unicenter SQL-Station Plan Analyzer влияние этих изменений на эффективность
выполнения кода, мы смогли добиться сокращения времени реакции приложений и
значительно улучшить SQL производительность наших баз данных.
В заключение хотелось бы отметить, что наибольший результат в повышении эффективности
удается достичь на высоконагруженных базах данных, в которых число транзакций
в секунду измеряется тысячами и на кодах составленных программистами, не имеющими
специального опыта. В этих случаях повышение производительности может улучшаться
в несколько раз и даже на порядок. В нашем примере мы умышленно не стали делать
акцент на точные значения полученных результатов. Целью было продемонстрировать
еще один способ повышения эффективности работы приложений, используя специальные
программные продукты. Описанный в нашем примере продукт принадлежит к обширному
семейству программных продуктов компании Computer Associates — Unicenter Database
Management Solutions. Этот программный комплекс позволяет решить большинство
основных проблем, связанных с управлением распределенными базами данных, а
именно:
- управление производительностью баз данных;
- администрирование баз данных;
- резервное копирование и восстановление баз данных.
Дополнительная информация
За дополнительной информацией обращайтесь в компанию Interface Ltd.