我注意到当我使用db-> insert_batch函数时Codeigniter每100个插入切片行。
背后的原因是什么?一次做所有事情不是更有收益吗?
同样从Codeigniter的角度来看,据我所知,在一个连接中不可能对多个表进行多次插入。
这三种情景之间的性能比较是什么?
1- Do 2220插入一个连接。 20到一个表,200到另一个,2200到最后一个表。
2-相同的插入,因为CodeIgniter ActiveRecord库在一次查询中建议(?)10到一个表,在2个不同的查询中建议200到第二个表,在20个查询中向第三个表插入2000个。
每行有3到2220个不同的查询。
答案 0 :(得分:0)
据我所知,你一次只能插入一张桌子,所以#1对#3对我来说没有意义(你的号码不加起来)
批量插入的原因是因为它们会导致高度限制性的写入锁定。根据数据库引擎的不同,插入可能会导致表级写锁,构建请求队列并最终在池达到限制时拒绝请求
批处理允许插入完成并偶尔释放锁定,允许更快的查询在再次锁定之前获取时间。
答案 1 :(得分:0)
如果您可以在事务中包装所有内容,则可以提高性能。查看延迟插入。