Выполнение сильного хруста на столе без воздействия на стол

Я ищу несколько общих советов о том, как лучше выполнять тяжелый анализ / извлечение данных для таблицы базы данных, не влияя на производительность обычных запросов сайта к таблице. Некоторые расчеты могут включать в себя объединение нескольких таблиц, а также сложную сортировку и упорядочение. Так что "используйте лучшие индексы" не всегда является решением.

Этот вопрос не совсем конкретный. Я ищу общий способ решения проблемы, которая возникала много раз за эти годы. Поэтому у меня нет конкретной таблицы, которую нужно показать, конкретного запроса, который нужно показать. Я подумал о том, чтобы сначала сбросить таблицу с помощью mysqldump, а затем повторно импортировать таблицу под другим именем, а затем выполнить тяжелый анализ этой временной таблицы. Мой системный администратор ненавидит эту идею, поэтому я ищу какие-либо другие решения, которые придумывали люди для решения этой проблемы.

2 ответа

Решение

Если ваш "тяжелый кризис" предназначен только для чтения, и вы не делаете ничего, что должно быть записано обратно в ваши производственные данные, используйте репликацию Master/Slave и используйте Slave для всех ваших потребностей в отчетности и анализе данных. Ссылка на репликацию будет поддерживать значения на ведомом устройстве в актуальном состоянии, и вы можете воздействовать на ведомое устройство с любой необходимой нагрузкой, не замедляя работу мастера, обслуживающего вашу производственную систему.

Если вы хотите избежать влияния на производительность вашей производственной базы данных, единственное решение, которое я использовал ранее, - это запуск ваших запросов на другом сервере базы данных.

Я бы сделал резервную копию всей базы данных, а затем восстановил бы ее на отдельном сервере.

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

Другие вопросы по тегам