我注意到当我使用 db->insert_batch 函数时,Codeigniter 每 100 次插入对行进行切片。
这背后的原因是什么?一次做所有事情不是更有收获吗?
同样从 Codeigniter 的角度来看,据我所知,不可能在一个连接中对多个表进行多次插入。
这三种场景之间的性能比较如何?
1- Do 2220 在一个连接中插入。一张 table 20,另一张 table 200,最后一张 table 2200。
2- 相同的插入,正如 CodeIgniter ActiveRecord 库建议的那样 (?) 在一次查询中对一个表进行 10 次插入,在两个不同的查询中对第二个表进行 200 次插入,在 20 个查询中对第三个表进行 2000 次插入。
每行 3- 2220 个不同的查询。
最佳答案
据我所知,您一次只能插入一个表,因此 #1 与 #3 对我来说没有意义(而且您的数字不相加)
批量插入的原因是因为它们会导致高度限制的写锁。根据数据库引擎,插入可能会导致表级写锁,建立请求队列并最终在池达到其限制时拒绝请求
批处理允许完成插入并偶尔释放锁,从而允许更快的查询在再次锁定之前获得时间。
关于php - 性能批量插入或切片多批量插入的最佳选择是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791544/