我正在编写一个通过短信网关发送短信的应用程序,而且我(显然)在数据库上保留了一条消息副本。到目前为止,为了进行原型设计,我使用Codeigniter的Active Record类将每条消息逐个插入到数据库中,但是对于批量发送消息,我将使用insert_batch()
来强制整个过程。我说的是每次用户请求1000-5000,甚至更多,短信(插入)。
我的问题是,insert_batch()
是否足够,足够快,并且没有错误的大量插入?或者它是否用于每批作业的插入量较少。在一个INSERT中使用多行创建自定义mysql查询是更安全还是更快?使用insert_batch()
可以插入的行数是否有限制?
之前是否还有其他人使用它进行大量插入?如果是的话,你的经历是什么?
答案 0 :(得分:1)
经过insert_batch()
一周的insert_batch()
测试和处理{{1}}的约1.000.000条记录后,我遇到了另一个问题所述的问题:Codeigniter's insert_batch() with thousands of inserts has missing records
因此,根据我的个人经验,insert_batch()对于10.000+行的大量插入是不可靠的,因为它有时不会插入任何可能导致db不一致的内容。对于表演,我没有任何问题,我到目前为止满意。安装了CentOS的旧PC(p4 w / 1GB RAM)中大约100秒的10.000行。
答案 1 :(得分:0)
Insert_batch是好的,因为您只需使用1个查询将信息插入数据库。
这比循环一系列陈述要好得多。
如您所知,每个陈述都是连接 - >查询 - >关闭。
我建议你要连接到你的数据库一次,而不是重复连接它。