:: Не фоксом единым
Oracle. Транкейт секций, вставка, глобальные индексы
Pekpytep
Автор

Сообщений: 727
Откуда: Луганск
Дата регистрации: 19.10.2010
Всем привет.
Есть секционированная таблица, содержащая около 30 млрд. записей с индексами. Необходимо удалить часть записей за последние месяц-полтора, пересчитать агрегаты и снова добавить в таблицу (пусть будет 5-10 млн записей). Как известно, при транкейте секции глобальные индексы становятся UNUSABLE, локальные секционированные индексы это не затрагивает. Собственно, вопрос состоит в выборе стратегии. Можно сначала сделать транкейт секций (что сломает индексы), сделать вставку, затем перестроить весь индекс:

ALTER TABLE ... TRUNCATE PARTITION ...;
INSERT... SELECT...;
ALTER INDEX ... REBUILD;

Или же обновить индексы при транкейте, затем индекс будет актуализироваться во время вставки:
ALTER TABLE ... TRUNCATE PARTITION ... UPDATE INDEXES;
INSERT... SELECT...;

В первом случае, предполагаю, вставка будет быстрее, но придется перестраивать весь индекс целиком. Во втором случае, вероятно, индекс будет тормозить вставку.
У кого какие мысли по этому поводу? Буду благодарен если поделитесь опытом.
Ratings: 0 negative/0 positive
Re: Oracle. Транкейт секций, вставка, глобальные индексы
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Перестроенный с нуля индекс обычно более оптимален по высоте индекса и заполненности веток, чем формирующийся в процессе появления новых значений.
Ratings: 0 negative/0 positive
Re: Oracle. Транкейт секций, вставка, глобальные индексы
Pekpytep
Автор

Сообщений: 727
Откуда: Луганск
Дата регистрации: 19.10.2010
Но при перестроении индекса же будет обработано 30 миллиардов записей, а при инсерте - 10 миллионов. При этом система в общем-то скорее olap, чем oltp - т.е. там нет вставок, изменения, удаления одиночных записей.
По-хорошему, не помешало бы испытать оба варианта с замером времени выполнения и нагрузки. Есть только одна проблема - тестовой площадки у меня нет, только прод.
Ratings: 0 negative/0 positive
Re: Oracle. Транкейт секций, вставка, глобальные индексы
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Мануал советует использовать UPDATE INDEXES если объём затрагиваемых операцией секций < 5% от общего размера таблицы.
Потери от не самой оптимальной внутренней организации индекса IMHO мало существенны. Конечно же для статических данных (раз залил, потом месяц пользуешься без insert/update) имеет смысл подумать и о такой мелочи - но не в первую очередь. Всё же цена перестройки 30G-записной таблицы весьма высока.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Oracle. Транкейт секций, вставка, глобальные индексы
Pekpytep
Автор

Сообщений: 727
Откуда: Луганск
Дата регистрации: 19.10.2010
5% от общего количества секций или записей?
Можно ссылку на страницу мануала? Что-то не нахожу.
Ratings: 0 negative/0 positive
Re: Oracle. Транкейт секций, вставка, глобальные индексы
Pekpytep
Автор

Сообщений: 727
Откуда: Луганск
Дата регистрации: 19.10.2010
Нашел.
docs.oracle.com
Спасибочки на добром слове.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика