【问题标题】:Speed up InnoDB mysql database import加快 InnoDB mysql 数据库导入
【发布时间】:2011-07-03 14:52:18
【问题描述】:

我刚买了一台新的 mysql 机器(16gb ram,4x SAS 15k rpm 300GB 驱动器在 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

【问题讨论】:

    标签: mysql performance innodb


    【解决方案1】:

    您可以在导入期间删除索引,并在完成后重建它们。您还应该尝试对插入进行分块,在单个事务中搜索自动提交和所有插入之间的最佳点。

    【讨论】:

    • 感谢您的提示。但配置设置明智,有什么建议吗?
    • 这不是我的一杯茶,其他人将不得不投入。
    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2014-01-12
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多