Ускорить импорт базы данных InnoDB mysql - PullRequest
1 голос
/ 03 июля 2011

Я только что получил новую машину MySQL (16 ГБ оперативной памяти, 4 диска SAS 15k об / мин, 300 ГБ в RAID10), так что довольно быстрая машина.

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

Это мой конфиг, любые советы по ускорению, но это не повредит надежности данных.

[mysqld]
skip-name-resolve
datadir=/var/lib/mysql
#socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
port=48221
user=mysql
old_passwords=0
max_connections = 1500
table_cache = 1024
max_allowed_packet = 16M
sort_buffer_size = 2M
thread_cache = 8
thread_concurrency = 32
query_cache_size = 0M
query_cache_type = 0
default-storage-engine = innodb
transaction_isolation = REPEATABLE-READ
tmp_table_size = 256M
long_query_time = 3
log_slow_queries = 1
innodb_additional_mem_pool_size=48M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=32M
innodb_buffer_pool_size=2G
innodb_autoinc_lock_mode=2
innodb_io_capacity=500
innodb_read_io_threads=16
innodb_write_io_threads=8
innodb_buffer_pool_size = 5000M
innodb_lock_wait_timeout = 300
innodb_max_dirty_pages_pct = 90
innodb_thread_concurrency =32

[mysqldump]
quick
single-transaction

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

1 Ответ

3 голосов
/ 03 июля 2011

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

...