Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 GTT и redo  [new]
торпок
Guest
Приветствую!

В процедуре используем GTT транзакционного типа то биш
create table ttt on commit delete rows as select ...
пишем в эту таблицу данные порциями тысяч по 200 и начинаем зверски их апдейтить.
После апдейтов дропаем таблицу.
Воот...
Но все это работает весьма медленно, вернее заливаем первые 200 тыс., упдейт все нормально, следующие 200 тыс. уже медленнее следующие 200 тыс. и привет все замирает
Есть подозрения что эти апдейты както забивают память в частности redo.
Правильна ли наша догадка и можно ли эту ситуацию какнить обойти?
17 июн 08, 14:23    [5809181]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
Консерва
Member

Откуда:
Сообщений: 2794
а што вам говорить алерть лог?
17 июн 08, 14:26    [5809211]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
алертъ лог я так понимаю молчитъ
так как админы не выражают ни каких озабоченностей в ходе выполнения процедуры
доступа к трассировке нема поэтому и находимся на уровне теоритизации тыксказать

да, если это имеет значение, то у нас еще есть индекс на временной таблице
17 июн 08, 14:29    [5809238]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
торпок
После апдейтов дропаем таблицу.

А это зачем?

торпок
заливаем первые 200 тыс., упдейт все нормально, следующие 200 тыс. уже медленнее следующие 200 тыс. и привет все замирает

Коммиты-то делаете?
17 июн 08, 14:29    [5809241]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
гтт
Guest
в чём суть использования GTT для вас, если вы всё равно таблицу дропаете? Обычная таблица чем не устравивает?
17 июн 08, 14:31    [5809250]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
временная таблица нужна для перекодировки основной
то есть грузим несколько полей а потом апдейтим их соединяясь со справочниками перекодировки
после апдейта переливаем временную таблицу в хранилище ну и коммитим это все стало быть
после коммита GTT очищается а мы ее дропаем чтобы не мешалась под ногами (для порядку так сказать) хотя вот это дропанье тоже смущает честно говоря
после этого заливаем новую порцию данных

используем GTT а не физическую таблицу исключительно в целях ускорения процесса перекодировки
17 июн 08, 14:37    [5809303]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
торпок
а мы ее дропаем чтобы не мешалась под ногами (для порядку так сказать)

Вот не надо этого. Здесь вам не MSSQL, здесь порядки другие.

торпок
используем GTT а не физическую таблицу исключительно в целях ускорения процесса перекодировки

А без нее не пробовали? На чистом SQL например.
17 июн 08, 14:42    [5809343]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
гтт
Guest
Ничего не понял, если честно. В чём ускорение-то должно проявлятся(которого у вас кстати нет - а есть замедление)?
17 июн 08, 14:42    [5809345]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
wildwind по поводу drop учтем, но я так понимаю это скорее косметический момент на быстродействии никак не скажется будем мы ее дропать или она сама помрет

по поводу причины использования - стремимся производить перекодировку в памяти, чтобы уменьшить количество обращений к диску и все такое
17 июн 08, 14:48    [5809406]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
гтт
Guest
торпок
wildwind по поводу drop учтем, но я так понимаю это скорее косметический момент на быстродействии никак не скажется будем мы ее дропать или она сама помрет

по поводу причины использования - стремимся производить перекодировку в памяти, чтобы уменьшить количество обращений к диску и все такое


А разве Oracle где-то утверждает, что GTT будет располагать данные исключительно в памяти?
17 июн 08, 14:53    [5809446]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
гтт
неужто не в памяти оно распалагается? не может таво быть
17 июн 08, 14:58    [5809499]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
Консерва
Member

Откуда:
Сообщений: 2794
торпок
гтт
неужто не в памяти оно распалагается? не может таво быть
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/logical.htm#i5696
17 июн 08, 15:02    [5809532]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
гтт
Guest
торпок
гтт
неужто не в памяти оно распалагается? не может таво быть


Может использовать TEMP-tablespace. Разве нет?г
17 июн 08, 15:02    [5809534]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
торпок
Приветствую!

В процедуре используем GTT транзакционного типа то биш
create table ttt on commit delete rows as select ...
пишем в эту таблицу данные порциями тысяч по 200 и начинаем зверски их апдейтить.
После апдейтов дропаем таблицу.
Воот...
Но все это работает весьма медленно, вернее заливаем первые 200 тыс., упдейт все нормально, следующие 200 тыс. уже медленнее следующие 200 тыс. и привет все замирает
Есть подозрения что эти апдейты както забивают память в частности redo.
Правильна ли наша догадка и можно ли эту ситуацию какнить обойти?

ууу, как всё запущено..
имхо - начинайте учить матчасть.. Ключевые слова: DDL, (не помешает) partitioning
17 июн 08, 15:03    [5809543]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
приииикольна :)
век живи век учись
еще и вот что прочитал
DML statements on temporary tables do not generate redo logs for the data changes. However, undo logs for the data and redo logs for the undo logs are generated. Data from the temporary table is automatically dropped in the case of session termination, either when the user logs off or when the session terminates abnormally such as during a session or instance failure.

то есть редо логи не генерируются а может и генерируются очень непонятно
то есть я так понимаю GTT не дают абсолютно никакого выиграша посравнению с обычными таблицами?
17 июн 08, 15:06    [5809568]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
scott/tiger
Guest
orawish

ууу, как всё запущено..
имхо - начинайте учить матчасть.. Ключевые слова: DDL, (не помешает) partitioning


Очен-но похоже на нашенских девелоперов (хелло, коллеги!) :) На предложение почитать мануал, получил ответ - ты админ, ты и читай мануал, а мое дело писать код.
17 июн 08, 15:09    [5809601]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
orawish
имхо - начинайте учить матчасть..

Начинать надо было до того, как обещать начальству: "проведем миграцию на Oracle в кратчайшие сроки!"
17 июн 08, 15:12    [5809621]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
ну накинулись коршуны =)

читать-то читаем, никуда от этого не дется
лучше по сабжу подскажите, если такие великие специалисты
17 июн 08, 15:15    [5809643]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
По сабжу.
торпок
грузим несколько полей а потом апдейтим их соединяясь со справочниками перекодировки после апдейта переливаем временную таблицу в хранилище ну и коммитим это все стало быть

Например вместо update делайте insert select и присоединяйте все что нужно.
17 июн 08, 15:22    [5809725]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
гтт
Guest
торпок

то есть я так понимаю GTT не дают абсолютно никакого выиграша посравнению с обычными таблицами?


То ли вас кто-от неправильно научил, то ли одно из двух.

Это всё равно что спросить: "что лучше, вилка или ложка?" Вилка ничем не лучше ложки - каждая выполняет свою роль. Вилкой лучше есть спагетти, а ложкой есть суп.
Тоже самое с GTT. GTT даёт определённый функционал, которого нет у обычных таблиц.
17 июн 08, 15:23    [5809735]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
scott/tiger
Guest
[quote]
Но все это работает весьма медленно, вернее заливаем первые 200 тыс., упдейт все нормально, следующие 200 тыс. уже медленнее следующие 200 тыс. и привет все замирает
[/quote]

А коммит делается после каждых 200 тыс? Из сказанного это неочевидно.
17 июн 08, 15:30    [5809826]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
торпок
Guest
ну ок, попробуем обойтись обычными таблицами

да, коммит через каждые 200 тыщ записей

ушол курить кайта
17 июн 08, 15:35    [5809871]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
гтт
Guest
торпок
ну накинулись коршуны =)

читать-то читаем, никуда от этого не дется
лучше по сабжу подскажите, если такие великие специалисты


Вот тебе пример.

SQL> create global temporary table test_temp as select * from dba_objects;

Table created.

SQL> select username, tablespace, extents from v$sort_usage;

no rows selected

SQL> insert into test_temp select * from dba_objects;

29673 rows created.

SQL> select username, tablespace, extents from v$sort_usage;

USERNAME                       TABLESPACE                         EXTENTS
------------------------------ ------------------------------- ----------
SYS                            TEMP                                     4

SQL> commit;

Commit complete.

SQL> select username, tablespace, extents from v$sort_usage;

no rows selected

Так что переводите на обычные таблицы. Это первый совет.
17 июн 08, 15:44    [5809939]     Ответить | Цитировать Сообщить модератору
 Re: GTT и redo  [new]
stax..
Guest
торпок
приииикольна :)
век живи век учись
еще и вот что прочитал
DML statements on temporary tables do not generate redo logs for the data changes. However, undo logs for the data and redo logs for the undo logs are generated. Data from the temporary table is automatically dropped in the case of session termination, either when the user logs off or when the session terminates abnormally such as during a session or instance failure.

то есть редо логи не генерируются а может и генерируются очень непонятно
то есть я так понимаю GTT не дают абсолютно никакого выиграша посравнению с обычными таблицами?

думаю что дают, ведь "do not generate redo logs"

по идее инсерты не должны сильно нагружать undo
а вот update имхо нагрузит

из-за чего тормоза для 600 тыс записей я затрудняюсь сказать
надо смотреть роллбеки и темр

возможно постоянно "роллбек" расширяет и тратит время,
или скажем свободное место в тмп долго ищет, не наю

мож всетаки Ваши ДБА подсуетятся
зы
а жалко что в оракле нет global temporary NOrollback табле
.....
stax
17 июн 08, 15:52    [5809996]     Ответить | Цитировать Сообщить модератору
 новости с фронта  [new]
торпок
Guest
stax..
во во в процессе курения кайта увидел тоже самое
(надо завести себе привычку читать мануалы до проектирования а не после)
но от апдейта и от мержа применительно к данным в ГТТ отказаться нет возможности (
тем временем админ решил увеличить PGA
храни нас Бог
17 июн 08, 16:03    [5810099]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Oracle Ответить