Как и в большинстве вещей, это зависит.
- Есть ли у вас сегодня запросы на сканирование таблиц, чтобы получить все их данные? Или все будет проходить через индекс?
- Какой вариант использования? Используете ли вы Workspace Manager для поддержки длительных транзакций? Или сохранить данные истории в едином рабочем пространстве LIVE?
- Как часто меняются строки? Сколько версий ряда вы планируете сохранить?
Если у вас есть запросы, которые будут выполнять сканирование таблиц, таблица будет перестраиваться каждую ночь, и вы планируете хранить хронологические данные навсегда, у вас, вероятно, будут серьезные проблемы с производительностью. Если все ваши запросы используют индексы для доступа к данным, строки изменяются нечасто, и вы просто намерены сохранить несколько версий истории, индексов для базовых таблиц должно быть достаточно.
Мы использовали Workspace Manager для ведения истории относительно медленно меняющихся таблиц навсегда, а также относительно быстро меняющихся таблиц в течение месяца. И мы использовали его для сохранения отдельных точек сохранения в разных таблицах в нескольких приложениях, чтобы пользователи могли постоянно сохранять состояние данных приложения в интересные моменты времени. В целом, мы остались довольны производительностью, хотя сложные запросы иногда попадают в сорняки, когда оптимизатор запутывается.
Так как вы на 11g, вы также можете рассмотреть Total Recall . Это вариант с дополнительными затратами в дополнение к корпоративной лицензии, но он предоставляет гораздо более эффективную архитектуру для отслеживания изменений данных с течением времени при условии, что вы намерены хранить все изменения в течение фиксированного периода времени. С другой стороны, вы более ограничены в DDL, который вы можете выдавать, не вызывая при этом удаление истории, что является довольно серьезным ограничением в приложениях, над которыми я работал.