答:有如下方法:
    a) 合并多条 insert 为一条,即: insert into t values(a,b,c), (d,e,f) ,,,
    原因分析:主要原因是多条 insert 合并后日志量(MySQL 的 binlog 和 innodb 的事务日志) 减少了,降低日志刷盘的数据量和频率,从而提高效率。通过合并 SQL 语句,同时也能减少 SQL 语句解析的次数,减少网络传输的 IO。

    b) 修改参数 bulk_insert_buffer_size, 调大批量插入的缓存
    c) 设置 innodb_flush_log_at_trx_commit = 0 ,相对于innodb_flush_log_at_trx_commit = 1 可以十分明显的提升导入速度;
    (备注:innodb_flush_log_at_trx_commit 参数对 InnoDB Log 的写入性能有非常关键的影响。该参数可以设置为 0,1,2,解释如下:
    0:log buffer 中的数据将以每秒一次的频率写入到 log file 中,且同时会进行文件系统到磁盘的同步操作,但是每个事务的 commit 并不会触发任何 log buffer 到 log file 的刷新或者文件系统到磁盘的刷新操作;
    1:在每次事务提交的时候将 log buffer 中的数据都会写入到 log file,同时也会触发文件系统到磁盘的同步;
    2:事务提交会触发 log buffer 到 log file 的刷新,但并不会触发磁盘文件系统到磁盘的同步。此外,每秒会有一次文件系统到磁盘同步操作。)

    d)手动使用事务
    因为 mysql 默认是 autocommit 的,这样每插入一条数据,都会进行一次commit;所以,为了减少创建事务的消耗,我们可用手工使用事务,即 START TRANSACTION;insert 。。,insert。。 commit;即执行多个 insert 后再一起提交; 一般 1000 条 insert 提交一次