Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 нужен совет  [new]
ora2007
Guest
Есть некая табличка с 500 млн.записей. Нужно сделать некую агрегированную версию этой таблицы и через поределённый промежуток времени её обновлять - приводить в соответствие с исходной. Попробовал создать мат.представление, создалось за 2 часа, создал для него журнал на исходную таблицу, попробовал его частично обновить, работает уже > 2 часов, и конца не видно.

Можно ли как-то всё это дело ускорить ? Кто бы как решил эту задачу ?
21 май 07, 13:49    [4163035]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
NightGhost
Member

Откуда:
Сообщений: 629
Агрегированная таблица представляет собой некий запрос к исходной?
21 май 07, 13:51    [4163053]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
NightGhost
Member

Откуда:
Сообщений: 629
Может попытаться ускорить запрос!
21 май 07, 13:52    [4163061]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
ora2007
Guest
NightGhost
Агрегированная таблица представляет собой некий запрос к исходной?


да
21 май 07, 13:54    [4163076]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
db-man
Guest
В подобной ситуации я делал так:

- заводится колонка в большой таблице: isnotprocessed number(1)
- заводится индекс на эту колонку
- строится агрегированная таблица
- isnotprocessed делается default 1 (старые данные не затронутся, а у новых будет автоматически 1)
- периодически запускается процедура обновления агрегированной таблицы, она смотрит только на те строчки, где isnotprocessed = 1
- обработанные строчки апдейтятся: isnotprocessed = null
- индекс периодически перестраивается, т.к в него много добавляется и из него много удаляется.

Вот и всё. Теперь легко выбирать необработанные строчки и обновлять агрегир. таблицу.
21 май 07, 14:04    [4163160]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
cone
Member

Откуда: СПб
Сообщений: 44
М.б. воспользоваться dbms_mview.explain_mview на предмет проверки возможен ли fast refresh для данного представления.
21 май 07, 18:13    [4164948]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
Stax..
Guest
в восьмерке у меня была "фича"
пока не включил ненужный мне count(*) фаст не обновлялось
......
stax
21 май 07, 18:40    [4165110]     Ответить | Цитировать Сообщить модератору
 Re: нужен совет  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5930
ora2007
Можно ли как-то всё это дело ускорить ? Кто бы как решил эту задачу ?


Для начала сними трассировку операции refresh. Вполне возможно, что простым merge будет проще актуализировать все данные в таблице, чем перерасчитывать её кусочки.
21 май 07, 19:10    [4165258]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить