Динамическое разделение таблицы в Oracle

Я нахожусь в процессе создания устройства хранения данных базы данных для моего приложения, состоящего на единственной таблице с огромным объемом данных (сотни миллионов записей). Я - планирование наличия индекса в день поле, так как я буду делать пакетное восстановление всех записей в установленный срок времени время от времени (например, получая все записи в течение следующего дня, в полночь).

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

9
задан Brian Tompsett - 汤莱恩 30 October 2016 в 16:58
поделиться

2 ответа

вы можете автоматизировать процесс создания или сокращения разделов с помощью динамического SQL . Вы должны написать процедуры с помощью EXECUTE IMMEDIATE или DBMS_SQL и запланировать их с помощью DBMS_JOB или DBMS_SCHEDULER ( DBMS_SCHEDULER ] является функцией 10g и более универсален, чем DBMS_JOB ).

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

3
ответ дан 4 December 2019 в 13:47
поделиться

В 11g мы можем определить разделы INTERVAL, и Oracle автоматически создаст новые разделы, когда получит новые записи, ключи которых не помещаются ни в один из существующих диапазонов. Это очень крутая функция. Подробнее .

Следует иметь в виду, что разделение на разделы является платным дополнением к лицензии Enterprise Edition. Так что использовать это недешево.

10
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: