sql查询在mysql/sequelize上出现间歇性超时

dphi5xsq  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(218)

我有一个查询,它似乎间歇超时

SELECT l.date, p.type
FROM (SELECT "2019-01-22T20:45:00" AS date UNION SELECT "2019-01-29T07:15:00" AS date) l
INNER JOIN pinfare_peak p
ON l.date BETWEEN p.start AND p.end;

有什么问题吗?当我在mysql工作台上尝试这个查询时,它似乎始终是正常的。但在sequelize上,结果似乎是:

TimeoutError: ResourceRequest timed out
at ResourceRequest._fireTimeout (/var/task/node_modules/generic-pool/lib/ResourceRequest.js:62:17)
at Timeout.bound (/var/task/node_modules/generic-pool/lib/ResourceRequest.js:8:15)
at ontimeout (timers.js:482:11)
at tryOnTimeout (timers.js:317:5)
at Timer.listOnTimeout (timers.js:277:5)

在rds错误日志中,我确实看到了如下内容:

Aborted connection 10 to db: 'income' user: 'income' host: '10.0.13.26' (Got an error reading communication packets)

但我不确定他们是否有关联

更新

我的代码看起来像:

const sqlList = dates.map(date => {
  return `SELECT "${date}" AS date`
}).join(' UNION ')
const sql = `
  SELECT l.date, p.type
  FROM (${sqlList}) l
  INNER JOIN pinfare_peak p
  ON l.date BETWEEN p.start AND p.end
`
console.log('Query', sql.replace('\s+', ' '), new Date())
let results
try {
  results = await sequelize.query(sql, { type: sequelize.QueryTypes.SELECT })
} catch (err) {
  console.log('FAIL TO QUERY DB', err.message)
  throw err
}

数据库选择失败。当我在同一个数据库上使用mysql工作台上生成的同一个select查询时,效果很好。其实也不慢。为什么会导致节点超时?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题