繁体   English   中英

sql查询是否会阻塞node.js事件循环?

[英]Does sql queries block node.js event loop?

我将使用在SQL Server上执行CRUD操作并将结果返回给客户端的纯node.js创建一个Web-api。 查询几乎要长时间运行(大约3秒),每秒请求量很高(大约30 rps)。 我将mssql包与回调函数一起使用,以在准备好后返回结果。 我已经阅读了很多关于节点的信息,我知道它非常适合于IO密集型而不是CPU密集型应用程序,并且事件循环也不应被阻塞,因为它是单线程的...

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

Node.js在非阻塞代码上全神贯注 ,以至于Node.js API中阻塞的几乎所有函数都将被标记为Sync

我见过的每个数据库驱动程序都遵循要求回调,使用Promises或在某些情况下两者都使用的模型。

作为Node.js开发人员,您必须仔细阅读文档以查找任何可能阻塞的调用,并且需要采用正确的并发方法来处理异步操作。 通常,您无需过于担心任何给定操作的时间长短的细节,但是在执行缓慢的操作时仍应小心。 以较小的块(例如,逐行)而不是一次全部处理数据。

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

暂无
暂无

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

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