【问题标题】:Codeigniter's insert_batch() function performance and limitations?Codeigniter 的 insert_batch() 函数性能和限制?
【发布时间】:2013-06-20 20:37:54
【问题描述】:

我正在编写一个通过短信网关发送短信的应用程序,并且我正在(显然)在数据库中保存消息的副本。到目前为止,出于原型设计的目的,我使用 Codeigniter 的 Active Record 类将每条消息一一插入到数据库中,但对于批量发送消息,我将使用insert_batch() 来加快整个过程。我说的是每次用户请求 1000-5000 条,甚至更多条短信(插入)。

我的问题是,insert_batch() 对于如此大量的插入是否足够、足够快且没有错误?或者它是否被用于每个批处理作业的较少插入。在一个 INSERT 中使用多行进行自定义 mysql 查询是否更安全或更快? insert_batch()可以插入的行数有限制吗?

以前有没有其他人使用它进行大量插入?如果有,您的经验是什么?

【问题讨论】:

    标签: php mysql performance codeigniter


    【解决方案1】:

    insert_batch() 使用 insert_batch() 测试和处理大约 1.000.000 条记录一周后,我遇到了另一个 SO 问题中描述的以下问题:Codeigniter's insert_batch() with thousands of inserts has missing records

    因此,根据我的个人经验,insert_batch() 对于 10.000 多行的大量插入并不可靠,因为它有时不会插入可能导致数据库不一致的所有内容。对于性能,我没有问题,到目前为止我很满意。在安装了 CentOS 的旧 PC(p4 w/1GB RAM)中,大约 100 秒的 10.000 行。

    【讨论】:

    • 在我的经验中 insert_batch() 有时完全失败,什么也不做,什么也不返回......
    【解决方案2】:

    Insert_batch 很好,因为您只需使用 1 个查询将信息插入数据库。

    这比循环一系列语句要好得多。

    如你所知,每条语句都是连接->查询->关闭。

    我建议您连接数据库一次,而不是重复连接。

    【讨论】:

    • 当然。我知道。这就是我将使用 insert_batch() 的原因。但实际的问题是,insert_batch 是否一次不能处理 10-50-100 条记录,而更像是 5000 多条记录,我应该从中获得什么性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2015-01-28
    • 2014-02-07
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多