2010-05-07 6 views
1

Каковы последствия использования инструкции вставки стиля INSERT INTO foo ... SELECT FROM bar JOIN baz ... в сравнении с использованием того же оператора SELECT для дампа (bar, baz) в файл, а затем вставить в foo, загрузив файл?INSERT INTO ... SELECT ... vs dumping/loading файл в MySQL

В моем беспорядке я не видел огромной разницы. Я бы предположил, что прежний будет использовать больше памяти, но машина, на которой работает эта, имеет 8 ГБ оперативной памяти, и я даже не вижу, чтобы она проходила наполовину.

Есть ли огромные (или долгосрочные) последствия, которые я не вижу? Преимущества/недостатки?

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

ответ

0

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

+0

Полезно знать, хотя в моем конкретном случае во время загрузки нет запросов, поэтому блокировка таблиц не является большой проблемой (я отредактировал, чтобы уточнить это). –

0

Проблема является одновременным пользователем. INSERT-SELECT должен содержать блокировки, чтобы гарантировать дублирование и предотвратить любые изменения во время копирования. Метод файла может иметь изменения перед INSERT. Если это имеет значение, зависит от того, как вы определили FK и для чего вы действительно это делаете. Вы можете не иметь блокировок, поэтому используйте файл.

Смежные вопросы