我一直在使用nodejs处理mssql npm软件包,并且发现性能比在SSMS中运行相同的查询要慢得多。
一个简单的查询select * from contacts
。在给定的表中,大约有38000行和14列。运行此查询将导致节点进程的内存使用量激增至2GB左右,并花费三十多秒钟,最终因堆错误而崩溃。 SSMS中的同一查询需要两秒钟,并且内存使用率仍然很低。
我试图了解两者之间的区别。我知道SSMS是一个完整的软件产品,但是,我希望两者之间具有类似的性能。
任何人都会获得的任何见解,下面是我为测试查询时间而创建的示例代码。
我尝试使用流方法,结果与从数据库中检索结果的npm软件包页面上列出的其他方法相同。
var express = require('express');
const mssql = require('mssql');
var app = express();
const config = {
user: 'XXX',
password: 'XXX',
server: 'XXX',
database: 'XXX',
pool: {
max: 10,
min: 5,
idleTimeoutMillis: 30000
}
}
var query = 'SELECT * FROM contacts'
app.get('/query', async function () {
var connection = await mssql.connect(config);
var result = await mssql.query(query)
await mssql.close()
console.log(result)
});
app.listen(process.env.PORT || 6000);
预期结果:内存使用率低,查询返回时间快
实际结果:高内存使用率和长查询时间