我正在用 node.js 编写应用程序
我对 mysql 进行交易,https://github.com/mysqljs/mysql#transactions
应用程序启动时打开与数据库的连接
所有的交易都是通过它写的
对此,我想正确实现多线程,保持正常速度
问题:
beginTransaction通过或打开交易的最佳方式是什么START TRANSACTION?- 为每笔交易打开/关闭连接是否有意义(我害怕在多个连接上失去速度)
UPDATE
在这种情况下交易将如何实施?:
00:00:00 beginTransaction1;
00:00:01 sql1-1;
00:00:02 beginTransaction2;
00:00:03 sql2-1;
00:00:04 sql1-2;
00:00:05 commit1;
00:00:06 sql2-2;
00:00:07 commit2;
交易是相互独立的还是会相互冲突?
第一个问题的答案可以在文档中找到
START TRANSACTION符合标准并允许您设置其他参数。第二个问题需要更深入的讨论。MySQL(以及其他 DBMS)中的事务存在于会话或连接中。如果两个线程调用
START TRANSACTION同一个连接,你将得到的不是两个自治事务,而是一个:第二次调用
START TRANSACTION将导致第一个事务被隐式提交。在支持嵌套事务的 DBMS 中,如Oracle / MS SQL,第二次调用START TRANSACTION将启动一个嵌套事务。因此,如果要使它们独立,则必须为每个事务创建一个新连接。为了快速做到这一点,他们使用了诸如连接池之类的技术。我不是这方面的专家
node.js,但根据谷歌的说法,有对池的支持。了解有关连接池的更多信息。