1

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

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

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

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

1- 在一个连接中执行 2220 插入。20 到一张桌子,200 到另一张桌子,2200 到最后一张桌子。

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

每行 3-2220 个不同的查询。

4

2 回答 2

0

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

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

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

于 2013-02-09T21:07:16.840 回答
0

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

于 2013-02-09T21:16:50.643 回答