什么是最佳的性能批量插入或切片多批次插入?

时间:2013-02-09 21:00:18

标签: php mysql codeigniter codeigniter-2

我注意到当我使用db-> insert_batch函数时Codeigniter每100个插入切片行。

背后的原因是什么?一次做所有事情不是更有收益吗?

同样从Codeigniter的角度来看,据我所知,在一个连接中不可能对多个表进行多次插入。

这三种情景之间的性能比较是什么?

1- Do 2220插入一个连接。 20到一个表,200到另一个,2200到最后一个表。

2-相同的插入,因为CodeIgniter ActiveRecord库在一次查询中建议(?)10到一个表,在2个不同的查询中建议200到第二个表,在20个查询中向第三个表插入2000个。

每行有3到2220个不同的查询。

2 个答案:

答案 0 :(得分:0)

据我所知,你一次只能插入一张桌子,所以#1对#3对我来说没有意义(你的号码不加起来)

批量插入的原因是因为它们会导致高度限制性的写入锁定。根据数据库引擎的不同,插入可能会导致表级写锁,构建请求队列并最终在池达到限制时拒绝请求

批处理允许插入完成并偶尔释放锁定,允许更快的查询在再次锁定之前获取时间。

答案 1 :(得分:0)

如果您可以在事务中包装所有内容,则可以提高性能。查看延迟插入。