对代码进行一些基准测试,我试图提高批量写入的性能。我目前正在使用Spring的jdbcTemplate来插入updateBatch
批处理。
我每批插入50000条记录。使用rewritebatchedStatements=true
,插入所有这些记录大约需要60秒。
但是,如果我通过主键对记录进行预排序,我可以将其降低到2秒。
在我的应用程序层中对50,000条记录进行排序非常快,那么当数据未排序时,MySQL中缓慢插入的原因是什么?
答案 0 :(得分:-1)
一个原因可能是mysql b + tree索引,如果插入记录有主键,mysql会在主键上创建索引。然后,如果重新插入主键低于插入键的记录,创建B +树索引将花费更多时间。