繁体   English   中英

通过Node.js异步批量(批处理)插入MySQL(或MongoDB?)

[英]Async Bulk(batch) insert to MySQL(or MongoDB?) via Node.js

直接到问题->。

问题:使用Node.js(来自.NET和PHP背景)进行异步批量插入(如果MySql可以处理,则不需要批量插入)

示例:假设我有40个(可调)函数执行一些工作(异步),并且每个函数在单次迭代后在Table中添加一条记录,现在很可能同时有多个函数进行插入调用。 考虑到会有一个自动更新字段,MySql可以直接用这种方式处理吗?

在C#(。NET)中,我将使用dataTable包含每个函数的所有行,最后将dataTable批量插入数据库表中。 并为每个功能启动许多线程。

在这种情况下,您会建议什么方法,

万一我需要处理每张表10,000或400万行,方法是否会改变? 另外,数据库架构不会改变,MongoDB会是一个更好的选择吗?

我是Node,NoSql和noob学习阶段的新手。 因此,如果您可以对答案提供一些解释,那就太好了。

谢谢。

编辑 :答案:MySql或MongoDB都不支持任何形式的Bulk插入,实际上这只是一个foreach循环。 它们都能够同时处理大量连接,性能在很大程度上取决于您的要求和生产环境。

1)在MySql中,查询是针对每个连接顺序执行的。 如果使用一种连接,则40个函数将导致40个查询入队(通过mysql库中的显式队列,基于同步化原语的代码或系统队列),不一定按启动40个函数的顺序排队。 在这种情况下,MySQL的自动更新字段不会出现任何竞争条件问题

2)如果您确实想并行执行40个查​​询,则需要打开与MySQL的40个连接(从性能的角度来看,这不是一个好主意,但Mysql还是旨在正确处理多个客户端的自动增量)

3)在线路级别的Mysql协议中,没有特殊的批量插入命令,任何公开批量插入api的库实际上只是在执行长的“插入...值”查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM