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



目前我们正在将Mysql Cluster与Mybaits一起使用。当我们对特定表进行批量插入或更新时,需要 120 多秒,但预期时间低于 30 秒。

例如 10k 条记录,首先我们尝试一次更新 10k 行,花费了 180 到 240 多分钟。因此,我们转向了一些拆分为4k,4k,2k等批次的解决方案,这也需要120到180分钟。最后,我们将唱片吐到2k,2k,....花了 90 到 120 秒,但 CPU 使用率很高。

那张桌子上没有任何关系。

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

群集在批处理时非常有效,因为避免了网络往返。但是你的插入听起来非常慢。在不使用批处理时,即使是串行插入也应该快得多。

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

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

插入。。。值 ((, ((, (( ...键入批处理刀片

而不是

插入。。。值 (( 插入。。。值 ((

您还可以根据要插入一个事务中的数据量增加ndb批次大小。

有关设置、插入方式、是否存在 Blob 以及架构和数据外观的详细信息将有助于更具体地回答问题。

最新更新