在MySQL集群中批量插入和更新

时间:2018-10-25 10:56:42

标签: nosql mysql-cluster

当前,我们在Mybaits中使用Mysql Cluster。当我们对特定表进行批量插入或更新时,花费了超过120秒的时间,但期望低于30秒。

对于示例10k记录,首先我们尝试一次更新10k行,这花费了超过180到240分钟的时间。因此,我们转到了一些解决方案,将其分成4k,4k,2k等批次,这也花费了120到180分钟。最终,我们将记录分割为2k,2k,...。花了90到120秒,但CPU使用率很高。

该表上没有任何关系。

针对这些情况的任何解决方案,我们都应转向nosql还是在数据库级别进行优化。

1 个答案:

答案 0 :(得分:0)

在进行批处理时,集群非常有效,因为可以避免网络往返。但是您的插入听起来很慢。即使不使用批处理,甚至连串行插入都应该更快。

当我将20k批记录插入群集表时,在我的笔记本电脑上大约需要0.18秒。显然取决于架构和数据量。

确保您没有使用例如每条记录后自动提交。也使用

INSERT ... VALUES(),(),()...类型批处理插入

而不是

INSERT ... VALUES() 插入...值()

您还可以根据要在一个事务中插入的数据量来增加ndb-batch-size。

有关设置,如何插入,是否存在斑点以及外观什么样的架构和数据的详细信息将有助于更具体地回答。