跨一个服务器上的几个InnoDB数据库的MySQL事务

时间:2013-11-01 12:30:49

标签: mysql database transactions innodb

我对MySQL InnoDB引擎事务有一些快速的问题。我有一些这种格式的数据库(db_1,db_2,db_3等...)

我想插入/更新到事务中的任何数据库,如下所示,

BEGIN
USE DB_1;
//Insert / Update into DB_1 tables

USE DB_2;
//Insert / Update into DB_2 tables
COMMIT

可以吗?或者我是否需要为每个数据库单独设置事务,如下所示,

BEGIN
USE DB_1;
//Insert / Update into DB_1 tables
COMMIT

BEGIN
USE DB_2;
//Insert / Update into DB_2 tables
COMMIT

在第一个方法中,在单个事务中切换多个数据库是否有任何问题。是事务数据库级别还是全局级别?

1 个答案:

答案 0 :(得分:2)

这应该有效。显然DB_1DB_2位于同一台服务器上。如果他们将要在不同的服务器上,那么集群就在您的未来! : - )

您可以考虑限定表的名称,而不是使用USE语句。这可能会简化你的逻辑。

例如,

  BEGIN;
  INSERT INTO DB_1.mytable (myid, mycol) VALUES (1,'a');
  INSERT INTO DB_2.histable (hisid, hiscol) VALUES (1,'b');
  SELECT whatever
    FROM DB_1.mytable AS m
    JOIN DB_2.histable AS h ON m.myid = h.hisid;
  COMMIT;