gpt4 book ai didi

node.js - 使用 Tedious 进行 MSSQL 查询时出现内存问题

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:26 24 4
gpt4 key购买 nike

我正在尝试用于连接 MSSQL 数据库的 Tedious 模块。

让我向您展示我的代码...

var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to go...
console.log("Connected");
executeStatement();
});

connection.on('error', function(err) {
console.log("Error");
});




function executeStatement() {
var stmt = new Request("Select id from customers", function (err,rowCount) {
if (err) console.log(err);
console.log("RowCount: " + rowCount);
process.exit(1);
});

stmt.on( 'row', function (columns) {
console.log("\t\tRow");
columns.forEach(function(column) {
console.log(column.value);
});
});
stmt.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
connection.execSql(stmt);
}

我的代码进行查询以获取“客户”表中的所有记录。我正在监听“行”事件,然后打印列值。客户表有 1.2 亿条记录。我面临的问题是,当我运行代码时, Node 应用程序的内存占用开始积累,一段时间后, Node 应用程序退出并出现内存不足错误。

作为解决方法,我开始分块查询客户表。我对一个字段进行排序,然后读取与该字段中的值对应的所有记录。读取所有记录后,我断开连接并重新连接到数据库并读取下一个值的所有记录。

这样,我意识到我的代码的内存占用情况得到了检查,并且没有内存不足错误。

我只是想知道是否有人遇到过类似的问题以及如何解决?我们是否可以修复模块来处理它或其他解决方案。

感谢您的帮助

最佳答案

答案就在设置中。确保 rowCollectiononRequestCompletion 设置为 false,您将看到不存在内存问题。它也记录在 Tedious 网页上。

   var connection = new tds.Connection({
userName: this.userId,
password: this.password,
server: this.server,
options: {
database: this.dbName,
rowCollectionOnRequestCompletion: false
}
});

关于node.js - 使用 Tedious 进行 MSSQL 查询时出现内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22976311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com