直接进入问题->。
问题:使用 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/