我有一个问题:我将 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 表