2013-02-09 44 views
1

我注意到,当我使用db-> insert_batch函数Codeigniter切片行每100插入。什么是最好的性能批量插入或切片多批次插入?

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

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

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

1- Do 2220插入一个连接。 20到一张桌子,200到其他桌子,2200到最后一桌。与CodeIgniter ActiveRecord库建议(?)10一次在一个表中查询,200在第二个表中在2个不同的查询中,2000在20个查询中插入到第三个表中,相同的插入。

3- 2220每行的不同查询。

回答

0

据我所知,你只能插入到一个表在一个时间,所以#1#与3是没有意义的,我(和你的数字对不上号)

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

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

0

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