php - 性能批量插入或切片多批量插入的最佳选择是什么?

标签 php mysql codeigniter codeigniter-2

我注意到当我使用 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/

相关文章:

php - 在 cloudflare 上运行一个长的 PHP 脚本让我超时(使用 nginx)

PHP - 自动下载 HTML 电子邮件中的图像

Mysql查询查找空闲员工

php - 使用 array() 在 codeigniter 中加载多个库。第一个库可以工作,但第二个库不行

php - 在 Codeigniter 中比较一个值与两列

codeigniter - COUNT/GROUP BY 与事件记录?

php - 在 PHP 中处理在不同时区存储/显示日期的最佳方法?

php - 在循环中插入评论模板

php - 将远程数据库备份到本地

mysql - 如何使用mysql创建where子句来过滤varchar字段中所有不为0的值?