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

标签 mysql node.js mongodb asynchronous nosql

直接进入问题->。

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

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

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

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

如果我需要处理每个表 10,000 或 400 万行,该方法是否应该改变? 另外数据库模式不会改变,MongoDB 会是更好的选择吗?

我是 Node、NoSql 的新手,目前处于菜鸟学习阶段。因此,如果您能为您的答案提供一些解释,那就太好了。

谢谢。

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

最佳答案

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

2) 如果你真的想并行执行 40 个查询,你需要打开 40 个到 MySQL 的连接(从性能角度来看这不是一个好主意,但同样,Mysql 被设计为正确处理多个查询的自动增量)客户)

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

关于mysql - 通过 Node.js 异步批量(批量)插入 MySQL(或 MongoDB?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9349316/

相关文章:

MySQL 键有点奇怪

mysql - 如何获取 nodejs mysql 连接池中未使用/已使用的连接数?

javascript - ES6 类属性未定义

mongodb - 配置和使用 mongodb 模型服务器进行单元测试

mongodb - 如何找出 MongoDB 稀疏索引中包含多少个对象?

php - 通过 Mac 的撇号无法正确保存到数据库

php - 检查数据库字段是否包含内爆变量的值

node.js - winston 中的纯文件日志记录

node.js - 防止 Express.js 4.x 向最终用户显示异常详细信息

javascript - 自动将数据保存到 Mongodb 映射数组