Выбор стратегии секционирования
Первое правило секционирования гласит: ни в коем случае не секционируйте таблицу без веской причины. Главными причинами для выполнения секционирования являются отсутствие места на диске и длительное время обработки. Чтобы создать таблицу, состоящую из миллиарда строк, требуется очень много времени и пространства. Если вам понадобится затем удалить из таблицы 10 миллионов строк, то удаление и внесение соответствующих изменений в индекс также займет много времени. Возможно, вам даже придется исключить всю таблицу из эксплуатации. Выполнив секционирование таблицы, вы ограничите область возможного разрушения данных размером самой большой секции, а не всей таблицы в целом.
Кроме того, поддержка секций в OracleS — единственный встроенный в сервер механизм, который позволяет выполнять операции обновления и удаления в параллельном режиме. Предположим, мы потеряли интерес к звонкам по номерам, начинающимся на 800, и выполняем примерно такую операцию:
DELETE FROM CALLS
WHERE call_to BETWEEN 8000000000 AND 8009999999;
OracleS может распараллелить эту операцию, запустив несколько потоков обработки, каждый из которых обрабатывает свою секцию. Особенности реализации OracleS требуют, чтобы параллельная операция UPDATE или DELETE была единственным оператором в транзакции. Следовательно, чтобы параллельные операции принесли реальную пользу, у вас должно быть приложение, транзакции которого:
•    выполняют массированные операции обновления и удаления для множества строк,
•    не требуют обращения к другим таблицам при своем выполнении.
Не думаем, чтобы все работающие приложения удовлетворяли этим критериям. Поэтому мы все-таки рекомендуем распараллеливать операции массированной обработки в приложении (как описано в главе 14 книги "Oracle: проектирование баз данных"). Указанным критериям скорее удовлетворят операции массированного удаления, нежели операции обновления. Однако удовлетворяющие этим критериям операции удаления во многих случаях могут выполняться гораздо эффективнее при секционировании по множествам строк, о которых известно, что все они будут удалены одновременно. Множества строк можно затем удалить путем удаления содержащей их секции. Это наиболее типичная стратегия ручного секционирования, используемая в Oracle?, и одна из проверенных в OracleS.
Независимо от выбранной стратегии, ни в коем случае не изменяйте секции, в которых будут располагаться строки, если только не собираетесь явно проектировать требуемую логику удаления и обновления. Вы можете обновлять ключи секционирования только в том случае, когда при изменении ключа не требуется перемещать строку в другую секцию. В этой связи необходимо
54	Oracle 8