У меня есть приблизительно 10 миллионов строк данных в 20 таблицах, которые я обрабатываю раз в месяц.
Я делаю это, копируя эти таблицы в новую схему (базу данных), затем внося изменения, чтобы обновления не выполнялись для запрашиваемых таблиц.
Чтобы сделать новые данные живыми, я попытался:
- изменение имени базы данных, которая закодирована в приложении, чтобы указывать на новые данные
- запускает большой оператор RENAME TABLE, который добавляет префикс, например СТАРЫЙ к действующим таблицам и перемещает новые таблицы в оперативную базу данных
При обоих методах нагрузка на сервер увеличивается примерно с 0,1 до более 50, а затем постепенно возвращается к нормальной работе. Я хотел бы избежать этого всплеска, если это возможно.
Кэш запросов отключен, я пробовал FLUSH TABLES и перезапускал MySQL сразу после изменения.
Данные считываются (не обновляются) только с моего сайта, поэтому я предполагаю, что это может быть Linux (мы используем RHEL5.3), который буферизует 5 ГБ данных и должен буферизовать новые данные.
Кто-нибудь получил какие-либо предложения о том, как избежать увеличения нагрузки?