Продолжается подписка на наши издания! Вы не забыли подписаться?

Oracle Database 11g. Новые возможности для разработчиков и администраторов баз данных
Воспроизведение нагрузки базы данных (Database Replay)

Автор: Аруп Нанда
Опубликовано: 23.04.2008

Чего вы больше всего опасаетесь, когда приходится вносить изменения в базу данных – будь они небольшими (к примеру, изменение параметров инициализации или атрибутов базы данных) или существенными, но необходимыми (такими, как добавление пакетов обновлений)? Как насчет того, чтобы вам самим обновиться до Oracle Database 11g?

Лично я всегда опасаюсь что-нибудь «сломать» в процессе изменений. Ведь даже самые мелкие изменения могут вызвать эффект домино, в итоге приведя к существенным последствиям.

Чтобы минимизировать подобный риск, в большинстве организаций изменения вначале вносятся в контрольную среду, имитирующую реальные условия. В ней создают рабочую нагрузку, схожую с реальной, и наблюдают за результатом. С точки зрения технологии, продублировать производственную систему несложно; другое дело – воспроизвести в ней реальную рабочую нагрузку. Вот это легче сказать, чем сделать.

Большинство организаций в подобных случаях старается использовать для генерации нагрузки какую-нибудь внешнюю программу, которая способна автоматически имитировать действия реального пользователя. Хотя чаще всего этот подход приемлем, подобная имитация никогда не является по-настоящему точным воспроизведением рабочей нагрузки базы данных. Такие программы всего лишь выполняют предопределенный запрос по нескольку раз и с разными параметрами. При этом приходится задавать программе запрос и указывать набор параметров, значения которых она может изменять случайным образом. Результат работы такой программы не отражает реальную нагрузку системы, а скорее просто показывает малую часть ее рабочей нагрузки, повторенную несколько раз подряд. Таким образом, происходит тестирование не более одного процента программного кода. Хуже всего то, что этим утилитам необходимо, чтобы вы сами задавали им все запросы, имитирующие рабочую нагрузку системы, а это может занять недели и месяцы для небольших приложений и даже около года для сложных.

Не хотели бы вы обладать более удобным способом записи всех действий (и не только связанных с языком DML), выполняемых СУБД, самой этой СУБД, и затем иметь возможность воспроизводить их точно в такой же последовательности, как они осуществлялись?

Добро пожаловать в Database Replay

Это желание исполнено в Oracle Database 11g, да еще как. Новая утилита Database Reply работает внутри базы данных как цифровой видеомагнитофон (DVR). Используя уникальный подход, она неукоснительно записывает все действия, выполняемые в базе данных ниже уровня SQL, в бинарном формате, и затем воспроизводит их либо в той же, либо в другой базе данных (ведь именно это вы хотели бы сделать до начала изменений в своей базе данных). К тому же, процесс записи можно настраивать – например, так, чтобы он регистрировал или исключал какие-то определенные виды действий.

Database Reply выполняет половину функций того, что Oracle называет опцией «Реальное тестировании приложений» (Real Application Testing) в Oracle Database 11g. Вторая половина выполняется другой утилитой – SQL Performance Analyzer. Основное различие между ними заключается в области применения: Database Replay записывает и воспроизводит все действия (с некоторой фильтрацией), выполняющиеся в базе данных, а SQL Performance Analyzer позволяет записывать и воспроизводить конкретные SQL-выражения. В Database Replay нельзя увидеть конкретные захваченные SQL-запросы или получить к ним доступ, тогда как в SQL Performance Analyzer такая возможность существует. Это дает важные преимущества при тюнинге SQL-запросов, потому что можно протестировать SQL-выражение, сформированное приложением, и оценить его влияние.

Концептуальная схема последовательности действий Database Replay показана на рисунке ниже.


  1. Запускается процесс захвата, который записывает действия, производимые над базой данных.
  2. Процесс записывает действия в специальные файлы, называемые «файлами захвата» (capture files) в каталоге «каталог захвата» (capture directory).
  3. Через некоторое время вы останавливаете процесс захвата и перемещаете эти файлы в тестовую систему в каталог «каталог воспроизведения» (replay directory).
  4. Вы запускаете процесс воспроизведения и несколько клиентов для того, чтобы воспроизвести все эти файлы захвата.
  5. Действия, записанные в файлах захвата, применяются к тестовой базе данных.

Итак, что дает Database Reply такого, чего нет во внешних программах нагрузочного тестирования? А вот что: другие утилиты всего лишь воспроизводят несколько синтетических выражений, которые вы заранее им определяете. В отличие от них, Database Reply не нуждается в предопределении SQL-выражений. Поскольку эта программа записывает все действия, происходящие на уровне, более низком, чем SQL-запросы, нет риска пропустить какие-либо ключевые операции, без которых могут возникнуть проблемы. Кроме того, вы захватываете их выборочно – для указанных пользователей, программ и так далее – и можете указать период времени, в течение которого следует регистрировать рабочую нагрузку. Поэтому вы можете по желанию воспроизвести проблемные моменты в рабочей нагрузке по желанию, не воспроизводя при этом всю базу данных.

Например, вы замечаете что программа, подсчитывающая начисление процентов в конце каждого месяца, создает проблемы, и предполагаете, что изменение какого-то параметра эти проблемы может решить. Все, что вам нужно сделать – захватить рабочую нагрузку для периода времени, когда эта программа работает (т.е. в конце месяца), внести изменение в параметр в тестовой системе, а потом воспроизвести в этой системе файлы захвата. Если проблемы при этом исчезли, решение у вас в руках. Если нет – не страшно, это всего лишь тестовая система. Вы не помешали работе производственной базы данных.

Как мне кажется, одна эта утилита стоит того, чтобы перейти на Oracle Database 11g. Теперь я покажу вам, как она работает.

Запись

Предварительная обработка

Воспроизведение

Варианты использования

Заключение

Изменения никогда не проходят безболезненно, но им не обязательно быть невыносимыми. Риск может быть минимизирован с помощью новой утилиты Database Replay. Она поможет вам записать каждое действие, выполняемое в системе конечными пользователями, и затем воспроизвести его в тестовой системе, что позволит с точностью определить влияние изменений. И все это – несколькими щелчками мышью и нажатиями кнопок. Помните, что можно тестировать не только производительность приложений, но и их функциональность.


Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.
........................
"С полным содержанием данной статьи можно ознакомиться в печатной версии журнала"

Copyright © 1994-2016 ООО "К-Пресс"