• Базы данных
  • Oracle
  • Сбор и воспроизведение нагрузки базы данных Oracle 11g Database Replay

Сбор и воспроизведение нагрузки базы данных Oracle 11g Database Replay

ОГЛАВЛЕНИЕ

О больше всего беспокоится администратор, когда ему нужно произвести какие-либо изменения в базе, будь то минимальные корректировки, как-то значение параметра инициализации, или значительные, например, установка обновлений? А как насчёт перехода на Oracle Database 11g?

Лично меня больше всего пугает риск того, что изменение приведёт к поломке чего-либо. Даже самое малое изменение может иметь огромный эффект.

Для того, чтобы минимизировать риск, большинство служб делают изменения в тестовой системе идентичной производственной, воспроизводят нагрузку идентичную производственной и исследуют воздействие. Клонирование производственной системы с технической точки зрения является тривиальной задачей. Однако, воспроизведение нагрузки - это совсем другая история. Легче сказать, чем сделать.

Большинство организаций пытается сделать это, используя генераторы нагрузки сторонних производителей, которые могут автоматически симулировать реальную нагрузку пользователей. Но несмотря на то, что данный подход может быть достаточным в большинстве случаев, он никогда не даёт реального воссоздания нагрузки на производственной базе. Эти приложения просто выполняют множество раз заранее написанные запросы с разными параметрами. Вы можете ввести запрос в этом приложении и задать диапазон параметров, которые он будет подставлять в произвольном порядке. Это не является репрезентативным воспроизведением  нагрузки в производственной системе, а просто неоднократно воспроизводит малую часть вашей производственной нагрузки. В результате тестируется всего 1% приложения. Хуже всего, когда эти инструменты требуют ввести все запросы с производственной системы вручную, что может занять недели и месяцы даже для тестирования самого небольшого приложения, и год для тестирования более-менее крупного.

Если бы это было возможным, не лучше ли записать все операции в базе данных (DML операции и прочее) внутри самой базы, а затем воспроизвести их в той же последовательности, как они выполнялись?