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

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

Тем не менее, я обеспокоен тем, что может быть какая-то уязвимость, которая позволяет людям взламывать золото в своей учетной записи на форуме, поэтому я добавил регистрацию в КАЖДОЙ транзакции с золотом на форуме.

Это работает хорошо. Я могу выполнить суммированные запросы, чтобы убедиться, что неизвестные источники не вводят форумное золото в систему, и обеспечить учет всего золотого форума, присужденного пользователям.

Тем не менее, он полностью взорвался. Всего за пару дней у меня в таблице более 100000 записей. Я также получил письмо от своего веб-хоста о медленном предупреждении о запросе mySQL, которое представляет собой простой SELECT из этой таблицы с одной записью, без объединений, упорядочивания, функций типа date_add() или чего-либо еще даже.

Поэтому я хочу полностью экспортировать И очистить таблицу с журналами. Теперь я обычно создаю резервную копию остальной части своей базы данных с помощью функции экспорта в phpmyadmin. Однако эта таблица очень активна, от 10 до 50 новых строк добавляются каждую секунду, но я хочу сохранить целостность и точность моих вычислений, не теряя записей.

Есть ли "атомарный" способ экспорта и удаления всех записей без промежуточных транзакций?

1 ответ

Итак, я только что закончил

  • создание новой таблицы TEMP,
  • выбрать все из таблицы журнала,
  • вставив его в новую таблицу TEMP,
  • затем удалив из LOG все, где существует такая же запись в таблице TEMP
  • экспорт таблицы TEMP
  • выполнение глобальной замены INSERT INTO `temp` на INSERT INTO `log`
Другие вопросы по тегам