Fork MySQL INSERT INTO(InnoDB)

atp*_*atp 2 mysql multithreading innodb fork insert

我正在尝试将大约5亿行垃圾数据插入数据库进行测试.现在我有一个PHP脚本循环遍历一些SELECT/INSERT语句TRANSACTION - 显然这不是最好的解决方案.表是InnoDB(行级锁定).

我想知道我(正确)分叉过程,这会加快这个INSERT过程吗?按照它的速度,需要140个小时才能完成.我关心两件事:

  1. 如果INSERT语句必须获取写锁定,那么它会使forking无用,因为多个进程不能同时写入同一个表吗?

  2. 我正在使用SELECT...LAST_INSERT_ID()(内部TRANSACTION).当多个进程INSERT进入数据库时,这种逻辑是否会中断?我可以为每个fork创建一个新的数据库连接,所以我希望这可以避免这个问题.

  3. 我应该使用多少个进程?查询本身很简单,我有一个带2GB RAM的常规双核开发盒.我设置我的InnoDB使用8个线程(innodb_thread_concurrency=8),但我不确定我是否应该使用8个进程,或者这是否是考虑匹配的正确方法.

谢谢你的帮助!

Mar*_*wis 7

MySQL文档讨论了有效插入大量记录的问题.似乎明显的赢家是使用LOAD DATA INFILE命令,然后是插入多个值列表的插入.