优化nodejs mysql插入

时间:2017-10-27 09:53:17

标签: mysql node.js mongodb query-optimization sql-insert

我一直在研究用于mongodb到mysql转换的ETL工具,它在github上托管mongodb-to-mysql-conversion。目前,在转换mongodb文档之后,插入查询被发送以执行,但插入速度最多为每秒600次插入。对于nodejs,mysql中的插入查询/秒是否有限制?如果是的话那么如何增加呢?否则是否有任何没有此限制的框架?整个转化的代码位于main conversion code

为插入查询创建数组存在限制,因为所有文档中都可能包含不同的键,这会在查询列名中产生差异。

1 个答案:

答案 0 :(得分:1)

(评论太长)

我在代码中看到很多“睡眠”。他们可能有充分的理由,但可能会影响插入率。

我看到一些代码显然将行“批处理”到INSERT(进入MySQL)。但并不是很明显有多少人在一起。 100-1000在某种程度上是最佳的。 (一次一个会慢10倍;一次超过1000会进入“收益递减”可能会导致与大尺寸相关的效率低下。)

批量大小是多少?

要传输的总行数是多少?

你确定减速是在MySQL方面,而不是Mongo或NodeJs吗?

这里代码批量插入的事实令人鼓舞。但根据我的经验,许多“框架”未能考虑超越玩具大小的项目。

让我们看看SHOW CREATE TABLE可能会影响插入速度。

关于在MySQL中使用键值数据的建议:不要拉出所有可能的列。拉出对搜索和过滤最重要的列;将其余部分留在JSON(或类似)列中供应用程序处理。更多:http://mysql.rjweb.org/doc.php/eav