Я пытаюсь импортировать страницу enwiki page.sql.gz из https://dumps.wikimedia.org/backup-index-bydb.html. Он имеет 35M записей, размер .gz составляет около 1,2 ГБ.
A) использовать таблицу изменений по умолчаниюключи отключения страницы "в скрипте sql
Это может быть быстрым в начале (1 МБ / с), а затем медленнее и медленнее (до 100 КБ / с через 30 минут), а затем еще хуже.
pv enwiki-20150205-page.sql.gz | gzip -cd | sed 's/ENGINE=InnoDB/ENGINE=MyISAM/ | mysql enwiki
При импорте данных mysql загружал данные в page.MYD и обновлял page.MYI одновременно.
B) используйте myisamchk, это делается примерно за 20 минут
# create empty table
zcat enwiki-20150205-page.sql.gz | sed '/^)/q' | sed 's/ENGINE=InnoDB/ENGINE=MyISAM/' | mysql enwiki
# use myisamchk
myisamchk --keys-used=0 -rq /var/lib/mysql/enwiki/page
# 9min to load data, 12min to re-index (triggered by "enable keys" in script)
pv enwiki-20150205-page.sql.gz | gzip -cd | sed '/^DROP TABLE.*;$/d' | sed '/^CREATE TABLE/,/^).*;$/d' | mysql enwiki
При импортеdata, mysql загружал данные в page.MYD сначала, после этого page.MYI обновлялся отдельно.
C) Я предпочитаю myisamchk --keys-used=0 -rq /var/lib/mysql/enwiki/page
.Гораздо эффективнее.
В соответствии с п.1425 для mysql-refman-5.7-en.pdf
: используйте ALTER TABLE ... DISABLE KEYS, чтобы MySQL прекратил обновление неуникальные индексы
Так что еслиСуществуют неуникальные индексы, используйте myisamchk для отключения ключей.
С другой стороны, я сравнил myisamchk -rq /var/lib/mysql/enwiki/page
и alter table page disable keys
, они кажутся эквивалентными.