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群集中的批量插入和更新的主要内容,如果未能解决你的问题,请参考以下文章