Oracle - усечение глобальной временной таблицы - PullRequest
3 голосов
/ 29 апреля 2010

Я обрабатываю большие объемы данных в итерациях, каждая итерация обрабатывает около 10-50 000 записей. Из-за такого большого количества записей я сначала вставляю их в глобальную временную таблицу, а затем обрабатываю ее. Обычно каждая итерация занимает 5-10 секунд.

Было бы целесообразно обрезать глобальную временную таблицу после каждой итерации, чтобы каждая итерация могла начинаться с пустой таблицы? Всего около 5000 итераций.

Ответы [ 2 ]

6 голосов
/ 29 апреля 2010

Нет! Идея глобальной временной таблицы заключается в том, что данные автоматически исчезают, когда они вам больше не нужны.

Например, если вы хотите, чтобы данные исчезали при фиксации, вы должны использовать опцию ON COMMIT DELETE ROWS при первоначальном создании таблицы.

Таким образом, вам не нужно выполнять TRUNCATE - вы просто делаете COMMIT, и таблица полностью свежая и пустая и готова к повторному использованию.

0 голосов
/ 29 апреля 2010

5000 итераций на 50000 записей за цикл? Если вам нужно выполнить так много обработки, вы наверняка сможете оптимизировать свою логику обработки для более эффективной работы. Это даст вам большую скорость по сравнению с усеченными таблицами.

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

например. иметь флаг «обработан», поэтому новые процессы не используют существующие данные. ИЛИ ЖЕ удалить данные, когда они больше не нужны.

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