2010-01-18 4 views
2

Когда я обновляю особенно большую таблицу, обновление заканчивается, потому что таблица заблокирована, а индексы перестраиваются. Есть ли способ перестроить индекс ONLINE (т. Е. Oracle), чтобы обновление не зависало?Восстановить индекс InnoDB ONLINE для предотвращения перерывов?

+0

Это обновление для одной строки или массовое обновление? Можете ли вы сбросить индексы, выполнить обновление, а затем воссоздать индексы? –

+0

Это для одной строки, но это многопользовательская система, и сейчас любое обновление этой таблицы блокирует таблицу до тех пор, пока индексы не будут перестроены. Это вызывает ошибки времени ожидания для других пользователей, отправляющих обновления в другие строки в одной таблице. –

ответ

0

Простой ответ: Нет, нет способа.

Более сложный ответ: вы можете эмулировать добавление онлайн-индексов, используя репликацию на основе утверждений и сначала добавляя указатель к подчиненному устройству, а затем делая его хозяином. Вот почему люди используют пакеты, такие как http://mysql-mmm.org/.

Смежные вопросы