Мы разрабатываем схему базы данных для новой системы на базе Oracle 11gR1.Мы определили основную схему, которая будет иметь около 100 таблиц, к ним будет обращаться из внешнего Java-приложения.
У нас есть требование проверять значения, которые были изменены в почти 50 таблицах, это имеетбыть сделано в каждом ряду.
Это означает, что, возможно, для одной строки в MYSYS.T1
может быть 50 (или больше или даже меньше, но минимум 1) строк в таблице MYSYS_AUDIT.T1_AUD
.У нас могут быть старые значения каждой записи в столбце и новые значения, доступные из T1
.
. Администратор базы данных дал наблюдение, советуя против этого метода, потому что он сказал, что отдельная схема означает дополнительный ввод-выводза каждую операцию .В основном схема AUDIT будет использоваться только для некоторого анализа и ввода значений (таким образом, SELECT
и INSERT
).
Правда ли, что "отдельная схема означает дополнительный ввод-вывод"?Я не смог найти оправдания.
Мне кажется логичным, что данные AUDIT не должны быть подделаны, поэтому отдельная схема.
Кроме того, мы разработали отдельную схему для архивирования некоторых таблиц.от MYSYS
.Начиная с MYSYS_ARC
таблица может быть скопирована на ленты или удалена через достаточное время.
Немного статистики: Несколько таблиц (около 20, 30) в схеме MYSYS
могут вырасти примерно до 50 миллионов строк.Мы попросили общее дисковое пространство 4 ТБ.MYSYS_AUDIT
схема может иметь в 10 раз больше, чем MYSYS
, но мы не будем хранить их более 3 месяцев.Несколько таблиц в MYSYS будут иметь следующие транзакции / мин.
- 100
INSERT
в MYSYS
, что означает одинаковое количество вставок в MYSYS_AUDIT
таблиц. - 1000
UPDATE
в MYSYS
таблицах, означающих одинаковое количество вставок в MYSYS_ADIT
таблицах.
Вопросы: Учитывая все это, вы можете предложить мне какие-либо улучшения?
- Отдельная схема влияет на дисковый ввод-вывод?(один дополнительный ввод / вывод для каждой схемы?)
- Какие-либо общие предложения?
Рисунок:
+-------------------+ +-------------------+
| MYSYS | | MYSYS_AUDIT |
| | | |
| 1. T1 | | 1. T1_AUD |
| 2. T2 | | 2. T2_AUD |
| 3. T3 |--------->| 3. T3_AUD |
| 4. T4 |(SELECT, | 4. T4_AUD |
| . | INSERT) | . |
| . | | . |
| . | | . |
| 100. T100 | | 50. T50_AUD |
+-------------------+ +-------------------+
|
|
|
|
|(INSERT)
|
|
|
*
+-------------------+
| MYSYS_ARC |
| |
| 1. T1_ARC |
| 2. T2_ARC |
| 3. T3_ARC |
| 4. T4_ARC |
| . |
| . |
| . |
| 100. T100_ARC |
+-------------------+
Кроме этогоУ нас есть еще две схемы с правами только на чтение, но в основном они предназначены для специальных целей, и мы не возражаем против их производительности.
Предложения: Есть несколько предложений.Мы договорились о следующем.
- Схема для логического разделения.
TRIGGER
для вставки данных в таблицы AUDIT. - Имена таблиц не будут иметь
_AUD
суффикс.:) - Процедура заполнения
ARCHIVE
таблиц схемы. - Разделы на основе интервалов.
Мы анализируем ...
- Опция диспетчера рабочей области.
Вопрос по-прежнему открыт для дальнейших предложений, прежде чем принимать решение APC или dpbradely.