Быстрое профилирование SQL для повышения

реклама
Быстрое профилирование SQL
для повышения производительности
базы данных
Embarcadero Technologies
Июль 2008 г.
Embarcadero Technologies Россия, СНГ
119180 Россия, Москва, 1-й Хвостов пер., 11-а, тел.+7(499) 238-36-11
Быстрое профилирование SQL для повышения производительности базы данных
ВВЕДЕНИЕ
Чтобы получить результат, надо сначала понять, с чего начинать. Чем раньше у вас
появится полное представление о том, какие именно запросы, хранимые процедуры
и триггеры снижают быстродействие базы данных, тем быстрее вы сможете решить
эту проблему. Слишком часто драгоценное время администратора баз данных
тратится на отслеживание различных данных о производительности с помощью
разных источников и средств. Поэтому иметь общую картину происходящего так
важно. Это помогает не потеряться в массе данных и всегда иметь четкое
представление, на что обращать внимание в первую очередь.
Неважно, являлись ли вы членом команды разработчиков с самого начала или вас
привлекли в последний момент перед запуском приложения, вы прекрасно
понимаете, что чем быстрее вы сделаете свою работу и чем меньше привлечете на
это ресурсов, тем раньше достигнете успеха.
Очень часто использование правильного средства решает, сделаете ли вы свою
работу в срок (и со спокойной душой уедете куда-нибудь за город на выходные) или
застрянете на всю ночь, сражаясь с отчетами о запросах и управлением различными
данными о производительности базы данных.
Embarcadero® DB Optimizer™ — это средство разработчика, которое можно настроить
в считаные минуты и увеличить возможности поиска сомнительных операторов SQL.
DB Optimizer помогает быстро профилировать базы данных Oracle®, Microsoft® SQL
Server, Sybase® и IBM® DB2 LUW, упрощая выявление и устранение ограничений
производительности, вызванных SQL. С помощью этого средства администраторы
баз данных получают гибкую и простую в использовании интегрированную среду
разработки для тестирования, профилирования и настройки SQL.
DB Optimizer также оснащен мощной интегрированной средой разработки SQL с
возможностью завершения кода, проверки ошибок в режиме реального времени,
планами объяснения и настройки кода, облегчающими задачи по созданию кода,
гарантируя его высокое качество.
Однако большинство администраторов баз данных отчетливо понимают, что
оптимизация производительности базы данных начинается с точной диагностики
проблемы. Профилирование базы данных позволяет быстро провести диагностику и
направить основные усилия на исправление проблем, нежели на их поиск.
Embarcadero Technologies
2
Быстрое профилирование SQL для повышения производительности базы данных
В этом документе рассказывается о том, как с помощью средства DB Optimizer можно
быстро и легко профилировать базы данных и находить неоптимальные операторы
SQL.
Средство DB Optimizer помогает оптимизировать производительность баз данных
следующими тремя способами:
• выявление операторов SQL, снижающих производительность базы данных, с
последующим графическим представлением анализа времени ожидания;
• поиск детализированной информации об активности каждого оператора SQL,
оформленной в виде столбцов со ссылками;
• профилирование с помощью пользовательского средства, управляемого без
агента, которое после простой установки обеспечит поддержку различных платформ
RDMS.
ИСПОЛЬЗОВАНИЕ АНАЛИЗА ВРЕМЕНИ ОЖИДАНИЯ ЭКОНОМИТ
ВРЕМЯ И ДЕНЬГИ
Средство Embarcadero DB Optimizer предоставляет графическое представление
анализа времени ожидания для выявления операторов SQL, снижающих
производительность базы данных.
АНАЛИЗ ВРЕМЕНИ ОЖИДАНИЯ В СРАВНЕНИИ С ТРАССИРОВОЧНЫМ АНАЛИЗОМ
Анализ времени ожидания приобретает все большую популярность в последнее
время из-за своей практичности и широких возможностей по устранению проблем. А
благодаря интуитивному характеру анализ времени ожидания заработал название
«анализ ограничений», потому что каждый администратор должен быстро выявлять
ограничения базы данных, чтобы делать свою работу качественно.
Одна из самых распространенных аналогий, используемых при описании
преимуществ анализа времени ожидания, — это сокращение времени на поездку до
места работы и обратно. Если вы хотите быстрее добраться до места работы, вы вряд
ли начнете считать, сколько оборотов совершат в пути шины автомобиля, или
отслеживать температуру автомобиля в разные периоды времени. Скорее всего, вы
отметите светофоры, остановка на которых занимает больше времени, и дороги с
наибольшим скоростным пределом. В некоторых случаях может оказаться, что
самый длинный путь до места работы является и самым быстрым.
Embarcadero Technologies
3
Быстрое профилирование SQL для повышения производительности базы данных
Традиционный трассировочный анализ — это популярное средство, составляющее
огромный хронологический список операций базы данных, на которые расходуется
ваше основное время. Трассировочный анализ содержит нужную информацию
только в том случае, если вы точно знаете, что ищете, и у вас есть время и желание
писать настраиваемые запросы для таблиц трассировки. Трассировочный анализ —
это мощное средство, но пик его полезности приходится на тот момент, когда вы уже
выявили проблему снижения производительности.
С использованием анализа времени ожидания поиск проблемы осуществляется
путем анализа списка совокупных временных задержек, заставляющих конечных
пользователей ждать представления нужной им информации. Лучшим способом
решения большинства проблем производительности SQL является определение
количества времени, необходимого для запуска запросов по базе данных, а также
способа экономии времени и повышения производительности путем оптимизации
индивидуальных запросов, планов объяснения или сохраненных процедур. Анализ
времени ожидания помогает узнать, где находятся самые медленные запросы и
подпрограммы, а также как часто это происходит.
СПОСОБ РЕАЛИЗАЦИИ АНАЛИЗА ВРЕМЕНИ ОЖИДАНИЯ В СРЕДСТВЕ
DB OPTIMIZER
Средство DB Optimizer использует преимущества методологии анализа времени
ожидания и оснащает свои диаграммы и графическое представление информации
простым интерфейсом для перемещения (рис. 1) и анализа (рис. 2).
Распределяя события ожидания по категориям и отображая их в виде вкладок,
средство DB Optimizer помогает быстро выявлять проблемы в работе базы данных.
Разные записи на вкладке Wait Category («Категория ожидания») обозначают имена
событий ожидания и количество времени, потраченного на ожидание этих событий,
в сравнении с длительностью сессии по созданию профилей или указанным
периодом времени.
Embarcadero Technologies
4
Быстрое профилирование SQL для повышения производительности базы данных
Рис. 1. Событие ожидания в представлении средства DB Optimizer
С помощью категорий событий средство DB Optimizer отображает результаты
анализа времени ожидания. Данный интерфейс также отображает проблемы в
конфигурации базы данных и архитектуре приложения.
Рис. 2. Быстрые подсказки
Всплывающие подсказки описывают событие ожидания и предлагают возможные
причины его появления.
Рассмотрим пример на основе профиля сервера SQL.
СОБЫТИЯ ОЖИДАНИЯ НА РАЗНЫХ ПЛАТФОРМАХ БАЗ ДАННЫХ
База данных
Категории событий
ожидания:
Oracle
Sybase
DB2
SQL Server
On CPU
Application
User I/O
Другое
Commit
CPU
Lock
I/O
Memory
Network
Другое
Fetch
Cursor
Execution
Operation
CPU
Lock
I/O
Memory
Другое
System I/O
Configuration
Cluster
Другое
Transaction
Connectivity
Buffer
Embarcadero Technologies
5
Быстрое профилирование SQL для повышения производительности базы данных
Средство DB Optimizer — это пользовательское средство, управляемое без агента,
которое устанавливается в считаные минуты. Начать сессию по созданию профилей и
настроить ее параметры так же легко, как настроить средство на указание
определенных источников данных. Можно создавать профили в режиме реального
времени, чтобы отслеживать проблемы по мере их выявления, или сохранить сессию,
чтобы просмотреть результаты анализа позже.
Средство DB Optimizer обладает достаточной гибкостью, чтобы интегрироваться в
любой процесс разработки, упрощая при этом обмен данными между
администраторами разрабатываемых и рабочих баз данных. Теперь этот процесс
похож на предоставление совместного доступа к файлам.
Интегрировать методологию анализа времени ожидания, содержащуюся в средстве
DB Optimizer, можно следующими тремя способами:
• специализированное тестирование;
• более продуктивная проверка кода;
• быстрое выявление причин снижения производительности.
СПЕЦИАЛИЗИРОВАННОЕ ТЕСТИРОВАНИЕ, ПОЗВОЛЯЮЩЕЕ
ДОБИТЬСЯ МАКСИМАЛЬНОЙ ЭФФЕКТИВНОСТИ
Администраторы рабочих баз данных могут оказать неоценимую помощь на стадии
тестирования приложения. К сожалению, они часто слишком заняты управлением и
контролем эффективности работы баз данных, поскольку основные усилия
большинства администраторов направлены именно на это. Но именно они могут
выявить проблемы в работе приложения до того, как оно будет запущено в
производство.
Разработке приложений очень редко уделяется достаточно времени. Имея под
рукой такое средство для быстрого анализа и профилирования базы данных, вы
сможете выполнить работу в любой срок. Повышение продуктивности означает
меньшие временные затраты на выполнение задачи.
Независимо от того, требуется ли выполнить профилирование за три минуты или
провести длительный анализ в процессе тестирования нагрузки, администратор
рабочей базы данных может с максимальной выгодой использовать свое рабочее
время с помощью средства DB Optimizer.
Embarcadero Technologies
6
Быстрое профилирование SQL для повышения производительности базы данных
СОЗДАНИЕ ПРОФИЛЕЙ НА ЭТАПЕ ПРОВЕРКИ КАЧЕСТВА
Профилирование базы данных в то время, когда приложение проходит проверку
качества, позволяет проводить анализ на основе реалистичных сценариев. Этот
процесс
предоставляет
великолепную
возможность
подготовленному
администратору профилировать базы данных на основе реальных сценариев, в то
время как инженеры выполняют пошаговую проверку качества. При использовании
средства DB Optimizer не нужны никакие настройки, оно не мешает работе членов
других команд, при этом обратная связь работает быстро и отчеты приходят тем
разработчикам, которым это необходимо.
По мере исправления дефектов на этапе проверки качества отключение приложения
обеспечивает проверку и тестирование исправлений, внесенных в последнюю
минуту. Средство DB Optimizer помогает убедиться, что все исправления, внесенные
на последнем этапе тестирования проекта, не окажут неблагоприятного влияния на
работу базы данных.
Например, на вкладке SQL средства DB Optimizer очень просто найти самые
медленные SQL-операторы в процессе 15-минутной сессии по созданию профилей.
Рис. 3. Операторы профилей
В детализированную статистику по каждому оператору SQL входят следующие
параметры:
• количество выполнений;
• общее затраченное время;
• анализ времени ожидания (разбиение по пунктам, на которые было
затрачено время).
Embarcadero Technologies
7
Быстрое профилирование SQL для повышения производительности базы данных
БОЛЕЕ ПРОДУКТИВНАЯ ПРОВЕРКА КОДА
В некоторых организациях проверку кода делают администраторы рабочих баз
данных. При этом объектами проверки обычно выступают операторы SQL и планы
объяснений для сохраненных процедур. Вследствие того что такие проверки часто
носят неформальный характер и могут не значиться в официальном расписании,
администратору рабочих баз данных необходимо выполнить их как можно быстрее.
Но главная проблема заключается в том, что разные разработчики используют
разные стили написания кода, вследствие чего даже родилось такое выражение, как
«50 способов задать один и тот же вопрос».
Говоря об операторах SQL, необходимо убедиться, что в рамках запроса
обрабатываются только необходимые для этого данные. Использование операторов
JOIN и WHERE часто повышает производительность базы данных. Проблемы в работе
базы данных очень часто ассоциируются с целым набором операторов SQL, и если
эти проблемы не устранить, то по мере повторного использования этих проблемных
операторов будут возникать все новые проблемы в работе.
Одним из основных преимуществ средства DB Optimizer является способ
представления информации об анализе логических условий. Анализ логических
условий — это способ анализа запросов соответственно условиям их использования
и представление таких запросов в таком виде, который позволяет быстро
определить, сколько раз выполнялись равнозначные запросы. Если несколько раз
выполнялся неэффективный запрос или соединение, средство DB Optimizer
графически отобразит количество раз и длительность каждого раза такого
выполнения. Это особенно полезно при предоставлении отчета о последовательном
извлечении данных команде разработчиков.
Embarcadero Technologies
8
Быстрое профилирование SQL для повышения производительности базы данных
Рис. 4. Анализ логических условий
БЫСТРОЕ ВЫЯВЛЕНИЕ ПРИЧИН СНИЖЕНИЯ
ПРОИЗВОДИТЕЛЬНОСТИ ПРОИЗВОДСТВЕННОЙ СРЕДЫ
На этапе запуска приложения очень часто можно наблюдать проблемы в его работе,
которые было невозможно заметить на этапе тестирования. В большинстве случаев
это происходит из-за того, что не удается настроить среду тестирования в полном
соответствии с параметрами производственной среды. Неважно, в чем состоит
причина — в недостатке аппаратного обеспечения или лицензий на ПО, среда
тестирования может не справиться с задачей выявления проблем в работе базы
данных в производственной среде.
Профилирование базы данных в производственной среде зачастую является лучшим
способом выявления основных проблем в ее работе, включая те, что возникают
только в сложных взаимодействиях систем с большой нагрузкой. Например, можно
более точно проанализировать и профилировать динамические операторы SQL и
хранимые процедуры во время использования приложения в режиме реального
времени.
В некоторых случаях гетерогенные производственные среды могут заставить
администратора рабочих баз данных переключаться с одного средства на другое в
процессе создания профилей для индивидуальных баз данных в кластеризованных
Embarcadero Technologies
9
Быстрое профилирование SQL для повышения производительности базы данных
или распределенных средах. Возможность профилировать каждую базу данных с
помощью одного средства, а также просматривать сессии профилирования для
различных баз данных позволяет получать только ту информацию, которая
необходима в данный момент.
После завершения и сохранения сессий их можно одновременно открыть и сравнить
проблемы в производительности. Сессии профилирования для источников данных
можно настраивать и контролировать в диалоговом окне конфигурации запуска
профиля, доступ к которому осуществляется из панели инструментов.
Рис. 5. Диалоговое окно конфигурации запуска профиля
Сессии профилирования средства DB Optimizer можно сохранить и предоставить к
ним совместный доступ. Исправление приложения на этапе производства теперь не
занимает много времени. Администраторы рабочих баз данных теперь могут
создавать копии результатов профилирования, диагностировать их и отправлять
разработчикам на диагностику и внесение исправлений, которые затем следует
проверить и применить.
Разработчики могут перепрофилировать базу данных в среде тестирования с
помощью тех же параметров средства DB Optimizer, что были использованы для
создания профиля в производственной среде.
РОЛЬ СРЕДСТВА DB OPTIMIZER
Средство DB Optimizer компании Embarcadero Technologies максимально
увеличивает производительность баз данных, позволяя разработчикам и
администраторам баз данных быстро обнаруживать, диагностировать и
оптимизировать непроизводительный код SQL. Оно устраняет существующие
ограничения производительности путем определения слишком часто или
интенсивно использующихся данных и оптимизации любых проблемных операторов.
Embarcadero Technologies
10
Быстрое профилирование SQL для повышения производительности базы данных
Использование процесса оптимизации на этапе разработки также позволяет
установить проблемы, связанные с кодом SQL, и предотвратить нежелательные сбои.
Средство Oracle Quick Fix предоставляет контекстуальные прикладные возможности
повышения производительности SQL и дополнительно применяет их в то время, как
вы печатаете. Средство DB Optimizer также предоставляет возможность пакетной
настройки операторов DML, сохраненных процедур, целых файлов SQL и System
Global Area.
Средство DB Optimizer оснащено следующими функциями:
• графическое представление анализа времени ожидания для выявления
операторов SQL, снижающих производительность базы данных;
• поиск детализированной информации об активности каждого оператора SQL,
оформленной в виде столбцов со ссылками;
• планы объяснения для анализа того, как будет выполняться код SQL и какие
будут затраты производительности;
• средство Quick Fixes, помогающее автоматически выявить и исправить
некорректные операторы кода SQL в режиме реального времени (только для Oracle);
• мгновенная настройка операторов DML приложения или базы данных (только
для Oracle).
КОЭФФИЦИЕНТ ОКУПАЕМОСТИ СРЕДСТВА DB OPTIMIZER
Внедрив возможности по профилированию и настройки средства DB Optimizer в
процесс разработки, вы получите оптимизированный код, который быстрее
проходит этапы проверки качества и производства, что позволит выполнить
требования соглашений об уровне обслуживания (SLA). Также можно протестировать
изменения и исправления, чтобы убедиться, что они не снижают
производительность системы, до того, как она будет запущена в производство.
Коэффициент окупаемости средства DB Optimizer можно рассчитать с помощью
следующих процедур:
• уменьшение времени на поиск и исправление проблемных операторов SQL;
• повышение производительности базы данных, а также продуктивности и
удовлетворения ожиданий конечного пользователя;
• уменьшение этапа проверки качества.
Embarcadero Technologies
11
Быстрое профилирование SQL для повышения производительности базы данных
Компания Embarcadero Technologies Inc. обеспечивает разработчиков приложений и
баз данных средствами для проектирования, создания и эксплуатации программных
продуктов в выбранной среде. Более трех миллионов компаний по всему миру,
включая 90 корпораций из списка Fortune 100, используют решения продуктовых
линеек Embarcadero — DatabaseGear™ и CodeGear™, которые позволяют более
продуктивно трудиться, эффективно сотрудничать и заниматься новаторской
деятельностью. Компания Embarcadero была основана в 1993 году; ее штаб-квартира
находится в Сан-Франциско, штат Калифорния, а отделения открыты во многих
странах
мира.
Более
подробная
информация
на
сайте
компании
www.embarcadero.com. Семейство продуктов Embarcadero DatabaseGear включает в
себя такие средства, как ER/Studio®, DBArtisan®, Rapid SQL® и Embarcadero® Change
Manager™.
Embarcadero Technologies
12
Скачать