2008-09-15 4 views
51

Есть ли документальные методы для ускорения дампов и импорта mySQL?Ускорение сбрасываний и импорта mysql

Это будет включать my.cnf настройки, используя RAMдиск, и т.д.

Глядя только для зарегистрированных методов, желательно с указанием критериев потенциальной скорости вверх.

ответ

15

http://www.maatkit.org/ имеет ки параллельный дамп и Mk-параллельно-восстановление

Если вы были желающие для многопоточного туздЫшпра, не хотят больше нет. Этот инструмент параллельно создает таблицы MySQL. Это гораздо более умный mysqldump, который может либо действовать как оболочка для mysqldump (с разумным поведением по умолчанию), либо как обертка вокруг SELECT INTO OUTFILE. Он предназначен для высокопроизводительных приложений с очень большими размерами данных, где скорость имеет большое значение. Он использует несколько процессоров и дисков, чтобы сбрасывать ваши данные намного быстрее.

В mysqldump существуют также различные потенциальные возможности, такие как отсутствие индексов при импорте дампа, но вместо этого они выполняются с помощью en-mass при завершении.

4

Использование расширенных вставок в свалках должно ускорить импорт.

+1

, если вы это сделаете, есть вероятность, что вы не сможете импортировать обратно, если дамп даже умеренно большой – Jonathan 2009-02-21 20:33:45

+0

Как выглядит клиент MySQL не способен обрабатывать даже умеренно большие свалки с расширенными вставками? – che 2009-02-21 22:07:02

+0

Я предполагаю, что у клиента есть буфер фиксированного размера для каждой строки, которую он читает, а расширенные вставки превышают этот предел. – Ztyx 2010-04-19 09:10:51

24
  1. Получить копию Высокопроизводительная MySQL. Отличная книга.
  2. Расширенные вставки в отвалах
  3. дамп с --tab формате, так что вы можете использовать mysqlimport, который быстрее, чем MySQL < DumpFile
  4. Импорт с несколькими потоками, по одному для каждой таблицы.
  5. Используйте другой двигатель базы данных, если это возможно. Импорт в сильно транзакционный движок, такой как innodb, ужасно медленный. Вставка в не транзакционный движок, такой как MyISAM намного быстрее.
  6. Посмотрите на скрипт сравнения таблиц в наборе инструментов Maakit и посмотрите, можете ли вы обновить свои таблицы, а не сбрасывать их и импортировать. Но вы, вероятно, говорите о резервном копировании/восстановлении.
4

Отключить внешний ключ и включить автоматическую фиксацию.

13

Если вы импортируете в InnoDB единственным наиболее эффективным, что вы можете сделать, это положить

innodb_flush_log_at_trx_commit = 2 

в вашем my.cnf, временно в то время как импорт работает. Вы можете вернуть его в 1, если вам нужна ACID.

+0

Интересно, не поставит ли он `0` еще быстрее? – 2013-06-01 07:50:52

+0

действительно не понял, что это делает, но это ускорило восстановление моего большого дампа базы данных innoDB. для myISAM dbs увеличилось значение `key_buffer_size` (до 30% доступной памяти). – arun 2013-09-22 01:19:27

5

Я думаю, ваш вопрос также зависит от того, где узкое место:

  • Если ваша сеть является узким местом вы также можете взглянуть на флагу -C/--compress к mysqldump.
  • Если на вашем компьютере заканчивается память (т.е. начинается обмен), вы должны купить больше памяти.

Кроме того, посмотрите на --quick флаг для mysqldump--disable-keys, если вы используете MyISAM).

1

mysqlhotcopy может быть альтернативой для вас, если у вас есть только таблицы MyIsam.

-2

Другой альтернативой является http://www.mydumper.org - многопоточный резервного копирования MySQL/восстановления, которая является 3x в 10 раз быстрее, чем mysqldump, и может обрабатывать как MyISAM, так и InnoDB, а также Drizzle http://vbtechsupport.com/1695/

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