例如,如果我有下面这样的代码,它是以串行方式还是并行方式执行?
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
let transaction = 'START TRANSACTION; //DO SOMETHING COMMIT;'
connection.query(transaction, function (error, results, fields) {
if (error) throw error;
console.log(results);
});
connection.query(transaction, function (error, results, fields) {
if (error) throw error;
console.log(results);
});
connection.end();上面确实写着
MySQL协议是连续的,这意味着需要多个连接来并行执行查询。您可以使用一个池来管理连接,一个简单的方法是为每个传入的http请求创建一个连接。
在网站上,但我想知道“顺序”是否意味着将查询按顺序发送到数据库,但“并行”执行,或者是否意味着下一个查询在第一个查询完全执行之前是否从未发送(这就是我所说的串行查询)。
如果它们在数据库中被“并行执行”,我如何确保每个查询都作为一个单独的transaction服务?我之所以问这个问题,是因为我必须处理多个查询(可能同时请求服务器)才能在数据库中连续执行。当然,在多个连接(与具有不同终端实例的mysql服务器的多个连接)下,这是可能的,但是我如何使用这个mysql库来模拟这个环境呢?
我不能使用承诺或回调,因为我不知道将执行多少次或何时执行查询。每次从客户端到服务器进行查询时,我都只能调用connection.query。
发布于 2018-03-05 07:50:30
您可以利用javascript承诺来解决您的问题。您可以检查https://github.com/tuhinpaul/syp-model/wiki/Programmatic-(Dynamic)-Chaining-and-Recursive-Functions-with-JavaScript-or-Node.js-Promises以了解如何串行执行任务。
syp-模型包提供了按顺序执行查询的能力,尽管此时文档需要更多的工作;而且它还没有集成的事务支持。
有用吗?
https://stackoverflow.com/questions/49102036
复制相似问题