Я работал с пакетом mssql npm, используя nodejs, и заметил, что производительность намного ниже, чем при выполнении того же запроса в SSMS.
Примером этого является простой запрос select * from contacts
.В данной таблице около 38000 строк и 14 столбцов.Выполнение этого запроса приводит к резкому увеличению использования памяти процессом узла примерно до 2 ГБ и занимает более тридцати секунд, что в итоге приводит к ошибке кучи.Тот же запрос в 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);
Ожидаемые результаты: Низкое использование памяти ибыстрое время возврата запроса
Фактические результаты: высокое использование памяти и длительное время запроса