Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Апр 19, 2010 08:36  Создание индекса без блокировки таблицы |
|
Полезность: Нет оценки
|
Задача - создать огромный индекс.
1-ый вариант:
Код: | create index my_idx on my_table (...) ... | Данный вариант блокирует всю таблицу, что парализует работу пользователей.
2-ой вариант:
Код: | create index my_idx on my_table (...) ... online parallel | Здесь добавлены 2 опции: online и parallel. Первая - для возможности параллельной работы пользователей, вторая - для ускорения процесса.
Господа DBA!
Есть ли минусы во втором варианте? Будет ли вспоследствии индекс из варианта 2 отличаться чем-либо в словаре Oracle или в эксплуатации от индекса, построенного по варианту 1? |
|
 |
ГлСП Профи
Вступление в Клуб: 20.09.2007
|
Пн Апр 19, 2010 10:18   |
|
Полезность: Нет оценки
|
Гм.. может я что-то не так делаю, но когда создаю индексы из администратора проектов, то таблица не блокируется. Делал создание индекса в таблице MAIN_DOCUM |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Апр 19, 2010 10:49   |
|
Полезность: Нет оценки
|
ГлСП пишет: | Гм.. может я что-то не так делаю, но когда создаю индексы из администратора проектов, то таблица не блокируется. Делал создание индекса в таблице MAIN_DOCUM |
Точно? У нас блокируется.
А если поймать стейтмент в момент выполнения, интересно там online будет что ли? |
|
 |
tsktalk Участник со стажем
Вступление в Клуб: 27.09.2007
|
Вт Апр 20, 2010 04:22   |
|
Полезность: Нет оценки
|
timochev пишет: | ГлСП пишет: | Гм.. может я что-то не так делаю, но когда создаю индексы из администратора проектов, то таблица не блокируется. Делал создание индекса в таблице MAIN_DOCUM |
Точно? У нас блокируется.
А если поймать стейтмент в момент выполнения, интересно там online будет что ли? |
по идее, да и по определению, не должна блокироваться таблица.
фулскан по таблице может быть, да и будет...
ради интереса выполните вот такие действия и кусок трейса покажите
Код: |
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12' ;
а тут выполните create index ....
ALTER SESSION SET EVENTS '10046 trace name context off' ;
|
ну и пример своего создаваемого индекса выложите, если есть такая возможность.
попробуем проверить "от куда ноги растут" |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Апр 20, 2010 08:24   |
|
Полезность: Нет оценки
|
tsktalk пишет: | по идее, да и по определению, не должна блокироваться таблица |
Я, конечно, могу снять трейс, но перед этим процитирую документацию Оракл:
Цитата: | Specify ONLINE to indicate that DML operations on the table will be allowed during creation of the index. |
Зачем тогда по Вашему мнению Оракл сделал эту опцию?
Добавлю, что у нас Oracle 9i. |
|
 |
tsktalk Участник со стажем
Вступление в Клуб: 27.09.2007
|
Вт Апр 20, 2010 09:27   |
|
Полезность: 1
|
timochev пишет: | tsktalk пишет: | по идее, да и по определению, не должна блокироваться таблица |
Я, конечно, могу снять трейс, но перед этим процитирую документацию Оракл:
Цитата: | Specify ONLINE to indicate that DML operations on the table will be allowed during creation of the index. |
Зачем тогда по Вашему мнению Оракл сделал эту опцию?
Добавлю, что у нас Oracle 9i. |
когда пишешь по привычке при создании индекса опцию online
то по прошествии времени забываешь, что она не обязательная.
да и обычно для таких больших таблиц, делают индексы в технологический перерыв - а там никто не мешается.
минусов не будет ни в том ни в другом случае
просто во втором случае оракл разобет на части табличку и паралельно в N потоков будет ее читать и формировать часть индекса
в конечном итоге все равно оракл соберет все в одну кучу и сохранит у себя в словаре
ну и работает это гораздо быстрее, если позволяет дисковая подсистема и память с процами. |
|
 |
tsktalk Участник со стажем
Вступление в Клуб: 27.09.2007
|
Вт Апр 20, 2010 09:31   |
|
Полезность: Нет оценки
|
Ну и собственно говоря Вы были правы на создании индекса трейс был бы бесполезен, там бы ничего не увидели, надо пользователей было бы трассировать.
 |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Апр 20, 2010 11:22   |
|
Полезность: Нет оценки
|
Спасибо!
Тогда я делаю это на промышленной базе. |
|
 |
tsktalk Участник со стажем
Вступление в Клуб: 27.09.2007
|
Вт Апр 20, 2010 12:02   |
|
Полезность: Нет оценки
|
timochev пишет: | Спасибо!
Тогда я делаю это на промышленной базе. |
если табличка у вас большая и в нее идут интенсивные вставки, то советую посмотреть в сторону реверсивного индекса
могут быть большие плюсы от этого
(но только при условиях массовой вставки - запуска подобных операций постоянно)
PS: через админ словаря - онлайн индекс не создать - это точно арм не позволяет такого
только ручками, так что создавайте индекс свой ручками - либо табличка и пользователи будут в ступоре. |
|
 |
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Апр 20, 2010 13:50   |
|
Полезность: Нет оценки
|
tsktalk пишет: | PS: через админ словаря - онлайн индекс не создать - это точно арм не позволяет такого
только ручками, так что создавайте индекс свой ручками - либо табличка и пользователи будут в ступоре. |
Я так и делаю.
Создаю индекс с точно таким же названием, которое должно быть в словаре ЦФТ. А потом накатывается хранилище с индексом, но индекс уже не строится - подхватывается существующий. |
|
 |
|