2017-02-05 8 views
0

Я работал над таблицей, которая содержит около 50 миллионов данных (размер 2 ГБ). У меня было требование оптимизировать производительность. Поэтому, когда я добавляю индекс по столбцу через панель phpmyadmin, таблица получает блокировку и приводит к тому, что все запросы в очереди на этой таблице сохраняются и в конечном итоге приводят к перезапуску/уничтожению всех запросов. (И да, я забыл упомянуть, что делал это на производстве. Мой плохой!)Таблица с 50 миллионами данных и добавлением индекса занимает слишком много времени

Когда я провел какое-то исследование, я обнаружил какое-то решение, например, создание дублирующей таблицы, но любой альтернативный метод?

ответ

0

Вы можете следовать этим шагам,

  1. Создать временную таблицу
  2. Создает триггеры первой таблицы (для вставки, обновления, удаления), так что они реплицируются на темп таблице
  3. в небольших партиях, перенос данных Когда это сделано, переименовать таблицу в новом таблице, и падение в другую таблицу

Bu t, как вы сказали, что делаете это в процессе производства, тогда вам нужно рассмотреть прямой трафик при отбрасывании стола и создании другого

+0

да, я могу. Я попробую еще раз – Sanky

+1

Еще лучше, используйте 'pt-online-schema-change'; он автоматизирует все, что для вас. –

+0

@Rick Спасибо, человек! Я попробую это в промежуточной среде –