Назад | Перейти на главную страницу

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

На производственных серверах мне нужно когда-нибудь удалить несколько сотен тысяч строк. Запрос оптимизирован, но удаление сразу приведет к зависанию серверов, поэтому я делаю это вручную кусками, удаляя, например, 5000 строк каждый раз. Чтобы позволить серверу очищать ожидающие запросы и сделать блокировки таблиц менее очевидными для конечных пользователей. Я использую движок MyISAM.

Разве нет инструмента / команды / метода, который выполняет такие длинные запросы с низким приоритетом или по частям, или таким образом, чтобы сервер не зависал в тех случаях, когда все в порядке, если на выполнение потребуется много времени?

какие лучшие практики?

Вы можете попробовать добавить LOW_PRIORITY ключевое слово к вашему DELETE запросите и посмотрите, как это работает. Например DELETE LOW_PRIORITY FROM tablenamegoeshere ...

Проверять, выписываться https://dev.mysql.com/doc/refman/5.5/en/delete.html Больше подробностей.