Javascript mysql js事务是否会打包所有指令,然后一次性提交

Javascript mysql js事务是否会打包所有指令,然后一次性提交,javascript,mysql,node.js,Javascript,Mysql,Node.js,当我使用mysql js时,我有点困惑。我想找出代码背后的实际机制 正如我所知,如果我想做很多可以并行运行的mysql插入,那么打包所有插入指令并一次性提交给mysql会更有效 我的问题是,我正在使用promise mysql.js。我想使用事务来像这样包装整个指令 conn.beginTransaction() einvoiceList.map(e => { conn.query("do some insertion") }) conn.commit() 我使用这种方法正确吗

当我使用mysql js时,我有点困惑。我想找出代码背后的实际机制

正如我所知,如果我想做很多可以并行运行的mysql插入,那么打包所有插入指令并一次性提交给mysql会更有效

我的问题是,我正在使用
promise mysql.js
。我想使用事务来像这样包装整个指令

conn.beginTransaction()

einvoiceList.map(e => {
   conn.query("do some insertion")
})

conn.commit()

我使用这种方法正确吗?

我有一个例子,使用nodejs和mysql2 lib在一个事务中并行处理对数据库的多个查询:

基本上,这个想法是打开一个事务,然后执行所有db查询,最后提交或回滚更改

提示:尝试使用async/Wait,这会使工作更轻松:)


谢谢你的回答。我的问题是mysql2会将承诺转换为一个提交并发送到mysql服务器吗?是的,承诺数组只是为了跟踪所有查询何时完成到数据库,因为您只想在所有查询完成时提交!很抱歉,迟了回答!如果此答案有助于您,请标记为有用:)无需承诺。一个连接内的所有查询都是按顺序执行的(这是基本协议限制)。只需等待他们一个接一个
async myAsyncMethod(root) {
    let promises = [];
    let conn = null;

    try {
        conn = await this.database.getConnection();

        await conn.query('START TRANSACTION');

        //Execute multiple queries and save them inside an array to wait for the results later
        for(...){
           promises.push();
        }

        //Wait until all queries are done!
        let results = await Promise.all(promises);
        await conn.query('COMMIT');
        await conn.release();

        return results;
    } catch (error) {
        if (conn != null) {
            await conn.query('ROLLBACK');
        }

        return 0;
    }
}