системное требование для большой транзакции Oracle (скажем, 100 ГБ) - PullRequest
0 голосов
/ 23 сентября 2010

Я использую базу данных оракула. Если нужно выполнить большую транзакцию (700 таблиц, миллион строк, размер данных будет около 100 ГБ), какие параметры нужно настроить? Сервер oracle имеет дисковое пространство 250G, 32G RAM. (Это вопрос для superuser / serverfault? Пожалуйста, переместите)

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Я не думаю, что 250G будет достаточно. У вас будет 100 ГБ данных в табличном пространстве (файлы .DBF), а также 100 ГБ незафиксированных транзакций в ваших ORL (онлайн-журналы повторов). И фактический размер на диске будет больше (вы должны настроить PCTUSED и PCTFREE таким образом, чтобы Oracle пытался заполнить каждый блок, а не оставлять место для строк для расширения), даже в этом случае, по приблизительным предположениям, вам понадобится 130-150G DBF для хранения столько данных.

Oracle вполне способен выполнять такие большие транзакции, и если вам действительно нужно сделать одно атомное обновление 100G, не бойтесь. Вам просто нужно убедиться, что это физически возможно на вашем оборудовании. Вполне вероятно, что лучшим вариантом, если подходит исходный формат файла данных, будет SQL * Loader Direct Path Load . Это записывает блоки непосредственно в DBF. Это очень быстро, но не очень гибко.

В этом случае ОЗУ не имеет большого значения, за исключением производительности.

1 голос
/ 23 сентября 2010

У вас должно быть место для сегмента отката, вероятно, более 100 ГБ, НО ваш подход не самый лучший. Вы должны избегать делать все в одной транзакции. Попробуйте разделить процесс на более мелкие последовательные шаги. Если шаг N не выполнен, должна быть возможность повторить шаг N без отмены шагов с 1 по N-1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...