MySQL клонирует таблицу, удаляет некоторые данные и затем меняет их имена - PullRequest
0 голосов
/ 10 августа 2010

У нас есть 8 миллионов строк таблицы MySQL. Мы хотим удалить из него около 2 м строк, удалить некоторые устаревшие индексы и добавить новые. Чтобы достичь практически полного простоя, мы планируем создать клон таблицы (и заблокировать оригинал), запустить скрипт (Ruby), чтобы удалить ненужные данные и, наконец, добавить новые индексы. Затем мы разместим страницу обслуживания в веб-приложении, поменяем их имена (переименовав таблицы) и перезапустим приложение.

Это лучший способ достичь наших конечных результатов? Любые другие советы / предложения от людей, которые имеют что-то похожее на это раньше? Какой лучший способ (супер крутой секретный mysql cmds) клонировать таблицу? Лучший / самый быстрый способ массового удаления строк?

1 Ответ

2 голосов
/ 10 августа 2010
  1. Все ссылки используют представление, не читая напрямую из old_table
  2. Создать новую_таблицу
  3. Выбрать нужные записи в new_table, невзять с собой записи записей, которые будут удалены
  4. Индекс new_table
  5. Обновить представление, заменить old_table ссылки на new_table
  6. Переименовать old_table

При необходимости работайте со old_table.

Настоящая проблема - новые данные в процессе перехода, что обычно означает простои.Надеюсь, вы можете просто отключить возможность добавления данных, а не отключать весь сайт.

...