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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL群集中的批量插入和更新相关的知识,希望对你有一定的参考价值。

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

对于示例10k记录,首先我们尝试更新10k行,花费超过180到240分钟。所以我们转向一些解决方案分成4k,4k,2k这样的批次,这也需要120到180分钟。最后我们将记录吐出到2k,2k,....花了90到120秒,但CPU使用率却很高。

该表没有任何关系。

对于这些情况的任何解决方案,我们应该转移到数据库级别的nosql或优化。

答案

当避免网络往返时,群集在批处理时非常有效。但你的插入声音非常慢。即使不使用批处理的串行插入也应该快得多。

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

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

INSERT ... VALUES(),(),()...键入批量插入

而不是

INSERT ... VALUES()INSERT ... VALUES()

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

有关您的设置,如何插入,是否有blob以及哪些架构和数据的详细信息将有助于更具体地回答。

以上是关于MySQL群集中的批量插入和更新的主要内容,如果未能解决你的问题,请参考以下文章

MySQL批量插入批量更新及批量删除语句

Java批量插入更新操作

mysql批量插入,批量更新

将MYSQL某一数据库中的多条记录批量插入到另一MYSQL数据库时,记录不存在则插入,存在则更新

jdbc-批量插入批量删除批量更新

MySQL+MyBatis一条命令批量插入或更新