【问题标题】:What is best for performance batch inserts or sliced multiple batch inserts?什么最适合性能批量插入或切片多个批量插入?
【发布时间】:2013-02-09 21:00:17
【问题描述】:

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

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

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

这三种场景的性能比较可以是什么?

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

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

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

【问题讨论】:

    标签: php mysql codeigniter codeigniter-2


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-07-12
        • 2011-02-28
        • 2014-09-17
        • 2012-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多