繁体   English   中英

Node.js MySQL连接,查询顺序和事件循环

[英]Node.js MySQL connection, queries order and Event Loop

看这个例子

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查询顺序?

是的,mysql和mysql2都保留顺序。 在以下示例中,执行顺序由数字表示

conn.query('query 1', (err) => {
    conn.query('query 3', (err, res) => {
    });
});

conn.query('query 2', (err) => {
    conn.query('query 4', (err, res) => {
    });
});

首先,将“查询1”和“查询2”放置到命令队列中。 然后,在“查询1”完成之后,将“查询3”添加到队列中(现在是“查询2,查询3”)。 “查询2”完成后,将调用其回调函数,结果将“查询4”添加到队列中。

这更多是协议属性,而不仅仅是驱动程序的功能。 Mysql协议仅在完全完成后才允许您在当前命令之后发送下一个命令,并且这种方式是“半双工”。 实际并行运行两个sql查询的唯一方法是打开2个单独的连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM