Node.js mysql createPool有时会死锁...但是为什么呢?

时间:2019-01-03 11:48:35

标签: mysql node.js deadlock mysqljs

我有一个问题:我将mysql从createConnection更改为createPool。但是有时候,当许多查询运行时,我会陷入僵局。

这是游泳池

var db_config = {
connectionLimit : 1000,
    host: 'localhost',
    user: '******',
    password: '******',
    database: '******.com'
};
pool = mysql.createPool(db_config);
pool.getConnection(function(err, connection) {
    if(err) {
        logger.error('[ERROR] Connecting to database "' + err.toString() + '"');
        setTimeout(function() { database_connection(); }, 2500);
    }
    else
    {
        pool.query('SET NAMES utf8');
        pool.query('SET CHARACTER SET utf8');
        logger.trace('[INFO] Connected to database and set utf8!');
    }
});

那是数据库连接

但是由于任何原因,当许多查询同时发送或发送时,我会收到死锁消息

  

试图获取锁时发现死锁;尝试重新开始交易

用于查询的每个查询都是这样

pool.query('SELECT * users');

我读到该查询结合了连接+查询+释放,这就是我读到的内容。

但是我不知道为什么会有那么多时间僵局……任何人有任何想法? :/

其InnoDB MySQL表

0 个答案:

没有答案