elnath
V2EX  ›  数据库

MySQL 支持跨库事务吗?

  •  
  •   elnath · Nov 18, 2024 · 2765 views
    This topic created in 572 days ago, the information mentioned may be changed or developed.
    前提:1.同一 MySQL 实例; 2.所有库都是 InnoDB
    可以直接使用 Begin 和 Commit 加 DB_A.Table DB_B.Table 之类的 SQL 进行事务操作吗?

    大致用 transaction 搜索了一下官方文档,好像没有看到特别明确的说明。

    看到一篇博客说如果是用 IP + Port 直接连接的实例则可,如果指定了 IP + Port + DB 则不可。
    这种说法是正确的吗?
    如果 MySQL 同一实例下有数个 InnoDB 数据库,MySQL 实例,引擎和库之间是什么样的关系呢?
    4 replies    2024-11-19 10:03:21 +08:00
    timepast
        1
    timepast  
       Nov 18, 2024
    分布式事务范畴了
    F281M6Dh8DXpD1g2
        2
    F281M6Dh8DXpD1g2  
       Nov 18, 2024 via iPhone
    一个实例下面为啥不行?
    Dlin
        3
    Dlin  
       Nov 19, 2024
    “这种说法”你试试不就知道了嘛
    edwardzcn98
        4
    edwardzcn98  
       Nov 19, 2024   ❤️ 1
    1.同一 MySQL 实例; 2.所有库都是 InnoDB
    可以直接使用 Begin 和 Commit 加 DB_A.Table DB_B.Table 之类的 SQL 进行事务操作吗?

    可以

    看到一篇博客说如果是用 IP + Port 直接连接的实例则可,如果指定了 IP + Port + DB 则不可。
    不正确

    跨实例应该用实现了 2PC 的分布式事务,原生 Mysql 8.0 XA https://dev.mysql.com/doc/refman/8.4/en/glossary.html#glos_xa 。一些商用版比如 PolarDB 是自己实现了插件+transaction 写法实现多主写。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2945 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 12:45 · PVG 20:45 · LAX 05:45 · JFK 08:45
    ♥ Do have faith in what you're doing.