Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> очистка и копирование таблиц, delete truncate append paralell 
:(
    Опции темы
cube
  Дата 24.4.2015, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: нет
Всего: 3



Требуется почистить табличку outtable и закидать туда много строк из intable 
Первый вариант процедуры:
Код

begin
    delete yu_didenko.outtable; commit;
    insert into yu_didenko.outtable select * from yu_didenko.intable; commit;
end;


"Улучшенный" второй вариант:
Код

begin
         execute immediate 'truncate table yu_didenko.outtable';
         insert /* +append parallel(yu_didenko.outtable,2)*/ into yu_didenko.outtable 
                select * from yu_didenko.intable;
      commit;
end;


При запуске нет никакой ощутимой разницы во времени выполнения(второй вариант всегда на 3-4 секунды быстрее - если первый работает 2.40, то второй отрабатывает 2.37). Почему?
PM MAIL   Вверх
Akina
Дата 24.4.2015, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



А сколько времени занимают отдельные запросы в процедуре?
А если таблицу вместо очистки дропнуть и создать заново?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 24.4.2015, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15709
Регистрация: 24.3.2004

Репутация: 18
Всего: 537



Цитата(Akina @  24.4.2015,  18:07 Найти цитируемый пост)
А если таблицу вместо очистки дропнуть и создать заново?

truncate нечто подобное и делает. Он даже лучше, потому что не трогает словари.


Цитата(cube @  24.4.2015,  13:04 Найти цитируемый пост)
Почему?

Ты хочешь, чтобы мы за тебя попрофилировали процедуру?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 25.4.2015, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(cube @  24.4.2015,  13:04 Найти цитируемый пост)
 Почему? 

1) +append пишет данные напрямую в блоки поверх вотермарка. Как следствие это требует монопольного достпуа к таблице. Как следствие весь параллелелизм по нему деградируется в сериал.
2) На таблице outtable есть триггеры? Триггеры отключают direct path, и, если они есть, скорее всего и являются тут причиной просадки по производительности. Я правильно понимаю, это продолжение другой темы? Я правильно понимаю, что вы из жавы вставились в intable за приемлемое время?
3) С чего вы взяли что у вас должен быть  профит. Я так понимаю вы всего лям по пиццот байт вставляете. Аппенд дает жирный профит на дохулиардах данных. Лям это семачки. На ляме, мне кажется, профит от директ патча должен быть соизмерим с погрешностью измерения. Ну, если железо, конечно, не тухлое.


Это сообщение отредактировал(а) Zloxa - 25.4.2015, 11:14


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1295 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.