目前我正在使用Ruby 1.9.1和'ruby-mysql'gem,它与'mysql'gem不同,只是用ruby编写的。实际上这很慢,因为它似乎以几乎每秒1的速率插入(SLOOOOOWWWWWW)。而且我也有很多插件,它几乎就是这个脚本所做的最直接的。我只使用1个连接(因为我只使用一个线程)。我希望通过创造一种
光纤来加快速度我认为启动20-50这些会大大增加数据库吞吐量。我是否正确走这条路?我认为这是最好的选择,而不是重构我的所有数据库代码,因为默认的mysql驱动程序的语法有点不同:(
答案 0 :(得分:0)
为什么在几次插入后关闭连接?你的脚本应该是:
交易会使这一点复杂化。
如果您正在进行非事务性插入,请绝对使用一个连接并一次写入一条记录。
如果您正在使用事务并编写一个真正庞大的数据集(即数百万行),那么您的数据库可能需要进行调整,以便它有足够的临时存储来处理它。
基本上,如果单个插页需要一秒钟,它会向我建议一个或多个:
现在所说的是,让多个“工人”进行插入可以导致整体吞吐量的有用增加,但每次插入1秒,这不是你的问题。你需要找到你的问题。
使用真正庞大的批量插入,也可能值得禁用检查约束,外键和索引,执行所有插入操作然后重新启用它们。
答案 1 :(得分:0)
由于您使用的是ruby1.9.1,因此只需使用Threads。它们不再是绿色的。光纤无法提供帮助,因为它们对于多个并发数据库连接而言重量太轻。