javascript - Node.js mssql 模块非常慢

标签 javascript sql-server node.js

我正在尝试提高使用 SQL Server 作为其数据库的 Node.js REST API 的性能。此 API 可能非常慢(例如 1.5 秒响应时间)。

在深入研究代码后,我发现 JavaScript 代码本身非常快(运行时间不到 1 毫秒),但让一切变慢的是通过 mssql 模块执行的 sql 查询。

即使像 "SELECT [id] from [users]" 这样简单的查询也需要大约 1 到 2 秒才能完成,因为 'users' 表仅包含 5 行!这个问题似乎发生在 mssql 模块中,因为当我在 SSMS 上或通过 python (pymssql) 运行相同的查询时,它们几乎立即完成。

有人知道这个解决方案或可以使用的替代模块吗? (欢迎任何其他建议)

这是我用来进行查询的代码:

const config = {...}

var sql = require('mssql');
var date;

sql.connect(config)
.then(pool => {
    date = Date.now();
    return pool.request()
    .query('select [id] from [users]');
})
.then(result => {
    console.dir('This query took ' + (Date.now() - date) + 'ms to return ' + result.recordset.length + ' rows!');
})
.catch(err => {
   console.log(err);
})

sql.on('error', err => {
    console.log(err);
})

输出是:

'This query took 1287ms to return 5 rows!'

最佳答案

找到解决方案!配置对象可以有一个 pool.min 属性,该属性指定必须保持事件状态的最小连接数。

我不知道这个属性,并认为模块默认保持连接处于事件状态,现在我添加了 pool.min = 5 并且一切都运行得更好,问题解决了!

希望这可以帮助一些人

关于javascript - Node.js mssql 模块非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47783518/

相关文章:

javascript - 更改 yAxis 和绘图选项以进行向下钻取

sql-server - 使用 .Net Core 2.0 应用程序中的 .dacpac 文件部署数据库

node.js - YouTube API:检索用户在给定日期之前/之后订阅的订阅列表

node.js - 构建 Knockout.js 时出现 fatal error

node.js - http重定向发生在请求正文发送之前还是之后?

javascript - 以编程方式解析 html 字符串而不附加到 DOM 的最佳方法

javascript - 子组件发送给父组件,父组件更新所有子组件

javascript - 调整 div 大小以适合屏幕

sql - 查找区分大小写的记录

php - Laravel bool 值在查询中返回 "1"/"0"而不是真/假