mysql事件循环执行,Node.js MySQL连接,查询顺序和事件循环
Let's see this example
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 ?
});
});
Does mysql/mysql2 node packages guarantee MySQL queries order or not?
解決方案
Yes, both mysql and mysql2 preserve the order. In following example order of execution is indicated by number
conn.query('query 1', (err) => {
conn.query('query 3', (err, res) => {
});
});
conn.query('query 2', (err) => {
conn.query('query 4', (err, res) => {
});
});
First, "query 1" and "query 2" are placed to command queue. Then after "query 1" is complete "query 3" is added to queue ( now it's "query 2, query 3" ). After "query 2" is complete it's callback function is called and as a result "query 4" is added to queue.
This is more of a protocol property, not just driver's feature. Mysql protocol only allows you to send next command only after current command if fully complete, and is in a way "half duplex". The only way to actually run two sql queries in parallel is to open 2 separate connections.
總結
以上是生活随笔為你收集整理的mysql事件循环执行,Node.js MySQL连接,查询顺序和事件循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kmeans算法中的sse_聚类算法入门
- 下一篇: mysql基准性能测试标准_mysql性