我有一个关于在NodeJS和MySQL中对DB进行异步查询的问题。假设我有以下代码
var mysql = require("mysql");
var con = mysql.createConnection({
....
});
con.connect();
con.query("select MILLIONS records from table1",function(err,rows){
console.log('Data received 1');
});
con.query("select HUNDRED records from table2",function(err,rows){
console.log('Data received 2');
});
第一个查询需要花费更多的时间来执行,第二个查询要快得多,我期待第二个回调将首先执行,但不是:)。我尝试创建第二个连接,它按预期工作 - 调用异步工作。看起来连接不是在两个单独的异步查询之间共享,它们无论如何都会运行。或者我做错了什么?也许有人可以提供一些有关如何进行异步调用的信息,而无需为每次调用建立连接。
答案 0 :(得分:0)
连接表示将命令发送到服务器并在应用程序和服务器之间接收数据的流。当该流忙于发送数百万条记录时,它也无法处理另一个查询。
如果要并行执行多个查询,则需要多个连接。您应该考虑使用connection pool。
var pool = mysql.createPool({ ... });
pool.query("select MILLIONS records from table1",function(err,rows){
console.log('Data received 1');
});
pool.query("select HUNDRED records from table2",function(err,rows){
console.log('Data received 2');
});