2013-03-06 3 views
0

Я только что экспортировал таблицу 150 МБ, используя mysqldump из командной строки. Для его экспорта потребовалось около 5 секунд.Почему MySQL импортируется медленнее, чем экспорт?

Однако, когда я пытаюсь импортировать тот же файл, это занимает до 5 минут.

Почему импорт медленнее, чем экспорт, и есть ли способ ускорить его? Мне нужно экспортировать/импортировать таблицы размером более 1 ГБ.

Должно ли это что-то делать с замками? Поскольку select является чтением данных, поэтому экспорт будет быстрее, и импорт будет записывать данные и может быть медленнее, так как ему нужны блокировки записи.

+1

Это могут быть индексы на ваших столах. – kamituel

+0

- физический диск назначения, такой же, как и диск базы данных? Индексы действительно также являются большой проблемой во время записи. – Sebas

+0

Импорт с сервера, размещенного на одной из хостинговых компаний, и импорт на локальном компьютере – GGio

ответ

1

Письмо медленнее, чем чтение, практически на любом носителе. В СУБД должны поддерживаться индексы, необходимо проверять ограничения, нужно выделить пространство, границы транзакций должны быть обслужены, необходимо выполнить транзакционное логарифмирование, чтобы откаты работали, ...

1

Чтение намного проще, чем писать в СУБД. И это до того, как вы рассмотрите регистрацию транзакций. Например, вы должны написать строку данных; вам также нужно обновить все индексы в таблице, где находится новая строка. Это означает, что на одну запись записывается намного больше, чем один ввод-вывод.

+0

в любом случае можно улучшить запись? – GGio

+0

Если вы импортируете большое количество данных, не создавайте индексы до тех пор, пока загрузка данных не будет завершена. Таким образом, вы создаете индексы сразу, а не постоянно обновляете. Это часто спасает много работы. Недостатком является то, что несуществующие индексы не могут отклонять строки, если вы полагаетесь на индексы для обеспечения ограничений уникальности и т. Д. –

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