让我们看看这个例子
conn.query('SET @v = 1;', (err) => {
conn.query('SELECT @v;', (err, res) => {
// res contains @v = 1 or 2 ?
});
});
conn.query('SET @v = 2;', (err) => {
conn.query('SELECT @v;', (err, res) => {
// res contains @v = 1 or 2 ?
});
});
做 mysql
/ mysql2
节点包是否保证mysql查询有序?
1条答案
按热度按时间euoag5mw1#
是的,mysql和mysql2都保持了顺序。在下面的示例中,执行顺序由数字表示
首先,“查询1”和“查询2”被放置到命令队列中。然后在“查询1”完成后,将“查询3”添加到队列中(现在是“查询2,查询3”)。在“query2”完成后,它的回调函数被调用,结果“query4”被添加到队列中。
这更多的是一个协议属性,而不仅仅是驱动程序的特性。mysql协议只允许在当前命令完全完成后才发送下一个命令,并且是“半双工”的。实际并行运行两个sql查询的唯一方法是打开两个单独的连接。