Влияние на производительность при использовании Oracle DBMS_WM.EnableVersioning - PullRequest
0 голосов
/ 08 марта 2011

Команда включения управления версиями (часть того, что Oracle называет Workspace Management) в Oracle (DBMS_WM.EnableVersioning) создает нематериализованные представления, которые нельзя проиндексировать. Будет ли это снижать производительность или будут использоваться индексы для таблиц _AUX, _LT и _LCK при запросе представлений?

Существуют ли существенные проблемы с производительностью в дополнение к индексации при включении управления версиями?

Я использую Oracle 11g.

1 Ответ

4 голосов
/ 08 марта 2011

Как и в большинстве вещей, это зависит.

  • Есть ли у вас сегодня запросы на сканирование таблиц, чтобы получить все их данные? Или все будет проходить через индекс?
  • Какой вариант использования? Используете ли вы Workspace Manager для поддержки длительных транзакций? Или сохранить данные истории в едином рабочем пространстве LIVE?
  • Как часто меняются строки? Сколько версий ряда вы планируете сохранить?

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

Мы использовали Workspace Manager для ведения истории относительно медленно меняющихся таблиц навсегда, а также относительно быстро меняющихся таблиц в течение месяца. И мы использовали его для сохранения отдельных точек сохранения в разных таблицах в нескольких приложениях, чтобы пользователи могли постоянно сохранять состояние данных приложения в интересные моменты времени. В целом, мы остались довольны производительностью, хотя сложные запросы иногда попадают в сорняки, когда оптимизатор запутывается.

Так как вы на 11g, вы также можете рассмотреть Total Recall . Это вариант с дополнительными затратами в дополнение к корпоративной лицензии, но он предоставляет гораздо более эффективную архитектуру для отслеживания изменений данных с течением времени при условии, что вы намерены хранить все изменения в течение фиксированного периода времени. С другой стороны, вы более ограничены в DDL, который вы можете выдавать, не вызывая при этом удаление истории, что является довольно серьезным ограничением в приложениях, над которыми я работал.

...