Удаление миллионов строк в MySQL

моя первая мысль была то, что Вы говорите, что боты очищают Вашу веб-страницу, которая предположила бы, что они только берут содержимое HTML. Так наличие Вашего экрана порядка проверяет (от http-журналов), что связанная с предложением диаграмма была загружена из бота

68
задан Brian Tompsett - 汤莱恩 4 July 2015 в 12:48
поделиться

4 ответа

DELETE FROM `table`
WHERE (whatever criteria)
ORDER BY `id`
LIMIT 1000

Промыть, полоскать, повторять, пока не будут затронуты нулевые строки. Может быть, в сценарии, который спит на секунду или три между итерациями.

134
ответ дан 24 November 2019 в 14:09
поделиться

I'd also recommend adding some constraints to your table to make sure that this doesn't happen to you again. A million rows, at 1000 per shot, will take 1000 repetitions of a script to complete. If the script runs once every 3.6 seconds you'll be done in an hour. No worries. Your clients are unlikely to notice.

8
ответ дан 24 November 2019 в 14:09
поделиться

Я бы использовал mk-archiver из отличного пакета утилит Maatkit (набор скриптов Perl для управления MySQL) Maatkit от Барона Шварца , автор книги О'Рейли «High Performance MySQL».

Цель - минимальное воздействие, работа по извлечению старых данных из таблица без влияния на запросы OLTP много. Вы можете вставить данные в другой стол, который не обязательно должен быть на одном сервер. Вы также можете написать это в файл в формате, подходящем для ЗАГРУЗКИ ИНФАЙЛ ДАННЫХ. Или вы не можете сделать ни то, ни другое, в в этом случае это просто добавочный УДАЛИТЬ.

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

Установка не требуется. , просто возьмите http://www.maatkit.org/get/mk-archiver и запустите на нем perldoc (или прочтите веб-сайт) для получения документации.

3
ответ дан 24 November 2019 в 14:09
поделиться

Do it in batches of lets say 2000 rows at a time. Commit in-between. A million rows isn't that much and this will be fast, unless you have many indexes on the table.

1
ответ дан 24 November 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: