|
|
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
Имеется мегаогромная таблица (сотни миллиардов строк). Таблица партиционирована (около 60 мил. строк в партиции). По таблице построены локально секционированные индексы. Вдруг выясняется, что надо построить еще один локально секциониованный индекс. Если делать по простому CREATE INDEX ..., то вываливается по ORA-01555. Решать проблему надо было быстро, и я: 1. переименовал таблицу. 2. Построил пустую партиционированную таблицу с нужным набором индексов. 3. Организовал переливку "по партициям" loop insert into <table1> select * from <table_2> partition <part_name>; commit; end loop; Работает, но медленно. (За три дня перенесено около 8-10 %% всех записей) Хочу подстраховаться "на будующее". Какие еще возможны способы создания индекса по такой огромной таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 13:04 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
Не пробовал на таких объемах, но вроде должен помочь partition exchange. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 13:16 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
partition exchange: т.е. пункты 1 и 2 моих действий оставляем , а п 3. переписываем с использованием partition exchange? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 13:22 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
А если как вариант 1. Переименовать старую 2. Создать как надо новую 3. Эспортнуть старую (если 10 то expdp) 4. Залить дамп в новую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 13:30 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
Maxiflypartition exchange: т.е. пункты 1 и 2 моих действий оставляем , а п 3. переписываем с использованием partition exchange? это при отсутствии глобальных индексов Можно попробовать так 1. приложению сказать skip_unusable_indexes 2. create index unusable 3. rebuild по партициям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 13:44 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
VicZai4. Залить дамп в новую Думаю, будет очень долго. Создать индекс над готовыми данными - намного быстрее, нежели заливать данные, попутно индексируя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:04 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
А если так: 1)Создать специальный сегмент отката(если не в AUTO режиме) большого размера 2)set transaction use rollback segment large_rb; 2)create index on ... nologging; 3)alter index .... logging; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:08 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
decode!А если так: Думаю, после предложения DBA вряд ли стоит обсуждать другие варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:10 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
имхо, так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:13 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
кхе - припоздал я ,однако.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:16 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
В чём суть create... UNUSABLE? Создаётся только определение индекса, а сам индекс нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:17 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
decode!В чём суть create... UNUSABLE? Создаётся только определение индекса, а сам индекс нет? создается только пустой корневой блок индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 14:19 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
А вернуть из UNUSABLE в USABLE не нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:12 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
decode!А вернуть из UNUSABLE в USABLE не нужно? REBUILD вернет в USABLE. С уважением, bw. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:23 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
риспект! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2006, 15:25 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
orawish, спасибо огроменное... чтож я раньше не увидел эту темку =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 15:38 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
А кляуза PARALLEL тут не поможет ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 16:31 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
после создания индексов с unusable, очень удобно использование dbms_pclxutil.build_part_index... детали смотри в документации. Классная вещь для локальных индексов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2008, 23:07 |
|
||
|
Как создать индекс на очень большой таблице.
|
|||
|---|---|---|---|
|
#18+
Мне удалось добиться ускорения с помощью: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 15:11 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=34074015&tid=1886643]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 510ms |

| 0 / 0 |
