gpt4 book ai didi

mysql - 当我在循环 TimeoutError : ResourceRequest timed out 内启动多个选择查询时出现错误

转载 作者:行者123 更新时间:2023-11-29 03:16:26 27 4
gpt4 key购买 nike

  • 我正在使用 nodeJs Express 框架。
  • 我将 mysql 数据库与 sequelizejs 库一起使用,并使用查询来检索数据。

当我为将近 50,00,000 条记录触发选择查询时,出现超时错误。

我已经完成了服务器超时但没有成功。我在sequlizeJs中做了pooling的方法,但是没有用。

function fetchNamesData(req, name) {
return new Promise((resolve, reject) => {
const names = req.app.locals.models.names_data;
names.findAll({
where: {
name: name
},
order: [['date', 'DESC']],
limit: 50
})
.then(function (dbRes) {
console.log(dbRes.length);
resolve(dbRes);
})
.catch(function (dbErr) {
console.log(dbErr);
return reject(dbErr);
});
});
}

allNames.forEach(element => {
//console.log(element.dataValues.name);
fetchNamesData(req, element.dataValues.name).then((dbRes) => {
//here I will have all the records
}).catch((dbErr) => { console.log(dbErr) });

var allNames = {有将近 7000 个名字}现在我迭代这个对象,每个名字在数据库中有 50 条记录我想获得 50*7000 = 3,50,000 这样的所有记录。

最佳答案

您的情况是:

循环遍历 7000 个名称并同时在 mySql 中命中 7000 个查询,mysql 将创建队列以同时执行 7000 个查询,从而导致机器负载。您可以更新配置以处理此类负载,或者

解决方案:尝试在每个查询中设置一些超时时间,这样您就可以获取更多记录,

allNames.forEach(element => {
setTimeout(() => { // <----------- HERE -------------
fetchNamesData(req, element.dataValues.name).then((dbRes) => {
//here I will have all the records
}).catch((dbErr) => {
console.log(dbErr)
});
},500); // <----------- HERE -------------
});

关于mysql - 当我在循环 TimeoutError : ResourceRequest timed out 内启动多个选择查询时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55557934/

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