【问题标题】:MySQL Transaction across several InnoDB databases on one server一台服务器上跨多个 InnoDB 数据库的 MySQL 事务
【发布时间】:2013-11-01 12:30:48
【问题描述】:

我有一些关于 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

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

【问题讨论】:

    标签: mysql database transactions innodb


    【解决方案1】:

    这应该可行。显然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;
    

    【讨论】:

    • 抱歉,我的回复延迟了。正如您所说,在我的情况下,所有数据库都在同一台服务器中。感谢您的信息。
    • @Prabu 这对你有用吗?这真的是使用一个 RDBMS 处理超过 2 个数据库的事务吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多