sql 查询会阻止 node.js 事件循环吗?

Does sql queries block node.js event loop?

我要创建一个 web-api 使用纯 node.js 在 SQL 服务器上执行 CRUD 操作并将 return 结果发送给客户端。查询几乎很长 运行(大约 3 秒)并且每秒请求很高(大约 30 rps)。我正在使用带有回调函数的 mssql 包,一旦它准备好就返回 return 结果。 我已经阅读了很多关于节点的文章,我知道它非常适合 IO 密集型而不是 CPU 密集型应用程序,而且事件循环不应该被阻止,因为它是单线程的...

我的问题:Node.js是否适合这种(SQL密集型)场景?在这种情况下使用 Node.js 是否存在任何性能问题? 谢谢

Node.js 已经在非阻塞代码上全力以赴,几乎所有在 Node.js API 中阻塞的函数都将被标记为 Sync.

我见过的每个数据库驱动程序都遵循需要回调、使用 Promises 或 in some cases both 的模型。

作为 Node.js 开发人员,您必须仔细阅读文档以查找任何潜在的阻塞调用,并且需要使用正确的并发方法来处理异步操作。通常你不需要过分关注任何给定操作的时间细节,但在做缓慢的事情时你仍然应该小心。以更小的块(例如逐行)而不是一次全部处理数据。

即使它只是单线程,Node.js 也可以在负载下执行得非常好,因为它可以非常快速地在异步操作之间切换。您还可以通过让多个 Node.js 进程很容易地并行工作来进行扩展,尤其是当您使用消息总线或通过负载平衡器进行 HTTP 类型的扇出时。