Как применить индекс к таблице MySQL / MyISAM без блокировки? - PullRequest
2 голосов
/ 10 марта 2009

Имея производственную таблицу с очень критическим столбцом (датой) без индекса, есть ли способы применить этот индекс без влияния на пользователя?

Таблица в настоящее время получает около 5-10 вставок каждую секунду, поэтому полная блокировка таблицы отсутствует; перенаправление этих вставок в альтернативную таблицу / базу данных, даже временно, также запрещено (по причинам корпоративной политики). Есть ли другие способы?

1 Ответ

2 голосов
/ 10 марта 2009

Насколько я знаю, это невозможно с MyISAM. С 5-10 INSERT в секунду вы должны рассмотреть InnoDB в любом случае, если вы не слишком много читаете.

Используете ли вы репликацию, предпочтительно в настройках Master-Master? (Вы должны!) Если это так, вы можете CREATE INDEX на резервном сервере, поменять роли и сделать то же самое, а затем переключиться обратно. Обязательно временно отключите репликацию (при использовании master-master), чтобы избежать репликации CREATE INDEX на активный узел.

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

...