优化nodejs mysql插入
我一直在为mongodb到mysql转换工作的ETL工具,这是在github这里主持mongodb到mysql的转换 。 目前在mongodb文档转换之后,插入查询被发送执行,但是插入速度最大为每秒600次插入。 在nodejs的mysql中插入query / sec是否有限制? 如果是的话再怎么增加呢? 否则有没有这个限制的框架? 整个转换的代码是在主转换代码 。
创build用于插入查询的数组是有限制的,因为所有文档都可以包含不同的键,这将在查询列名中产生差异。
(太长的评论)
我在代码中看到很多“沉睡”。 他们可能有很好的理由,但可能会影响插入率。
我看到一些代码,显然“批”行INSERT
(到MySQL中)。 但是,有多less人在一起,这并不明显。 100-1000是最佳的。 (每次减less10倍;超过1000个则会进入“收益递减”状态, 并可能导致与大规模相关的效率低下)。
什么是批量大小?
传输的行数是多less?
你确定放缓是在MySQL的一边,而不是Mongo的或NodeJ的?
这里的代码批量插入的事实是令人鼓舞的。 但根据我的经验,许多“框架”不考虑超出玩具大小的项目。
我们来看SHOW CREATE TABLE
。 有几件事情可能会影响插入速度。
在MySQL中使用键值数据的build议:不要拔出每个可能的列。 只提取search和过滤最重要的列; 留下其余的JSON(或类似的)列应用程序来处理。 更多: http : //mysql.rjweb.org/doc.php/eav
- 为什么明确告诉我,我的默认视图引擎没有定义?
- node.js&mongodb,当数据快速增长时,如何devise一个数据存档。
- Mongoose – 通过findOne()search模式失败
- 如何replaceObjectId ref。 与来自MongoDB的实际对象(idealy在服务器端)?
- MongoError:由于驱动程序仍在连接Server.capabilities,因此无法build立拓扑function
- 为什么mongoose打开两个连接?
- 如何引用与Sails 0.10.x的一对多关系的相关模型
- Mongoose在启动时调用ensureIndex,但不推荐。 那么为什么这是默认的?
- callback地狱,厄运金字塔,node.js