| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > очистка и копирование таблиц |
| Автор: cube 24.4.2015, 12:04 | ||||
| Требуется почистить табличку outtable и закидать туда много строк из intable Первый вариант процедуры:
"Улучшенный" второй вариант:
При запуске нет никакой ощутимой разницы во времени выполнения(второй вариант всегда на 3-4 секунды быстрее - если первый работает 2.40, то второй отрабатывает 2.37). Почему? |
| Автор: Akina 24.4.2015, 17:07 |
| А сколько времени занимают отдельные запросы в процедуре? А если таблицу вместо очистки дропнуть и создать заново? |
| Автор: LSD 24.4.2015, 17:32 |
truncate нечто подобное и делает. Он даже лучше, потому что не трогает словари. Ты хочешь, чтобы мы за тебя http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_profiler.htm#CHDBHDFE процедуру? |
| Автор: Zloxa 25.4.2015, 10:51 |
1) +append пишет данные напрямую в блоки поверх вотермарка. Как следствие это требует монопольного достпуа к таблице. Как следствие весь параллелелизм по нему деградируется в сериал. 2) На таблице outtable есть триггеры? Триггеры отключают direct path, и, если они есть, скорее всего и являются тут причиной просадки по производительности. Я правильно понимаю, это продолжение http://forum.vingrad.ru/forum/topic-383050/kw-oracle-inserting-batch-preparedstatement.htmlтемы? Я правильно понимаю, что вы из жавы вставились в intable за приемлемое время? 3) С чего вы взяли что у вас должен быть профит. Я так понимаю вы всего лям по пиццот байт вставляете. Аппенд дает жирный профит на дохулиардах данных. Лям это семачки. На ляме, мне кажется, профит от директ патча должен быть соизмерим с погрешностью измерения. Ну, если железо, конечно, не тухлое. |