MySQL 支持跨库事务吗?

53 天前
 elnath
前提:1.同一 MySQL 实例; 2.所有库都是 InnoDB
可以直接使用 Begin 和 Commit 加 DB_A.Table DB_B.Table 之类的 SQL 进行事务操作吗?

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

看到一篇博客说如果是用 IP + Port 直接连接的实例则可,如果指定了 IP + Port + DB 则不可。
这种说法是正确的吗?
如果 MySQL 同一实例下有数个 InnoDB 数据库,MySQL 实例,引擎和库之间是什么样的关系呢?
1871 次点击
所在节点    数据库
4 条回复
timepast
53 天前
分布式事务范畴了
liprais
53 天前
一个实例下面为啥不行?
Dlin
53 天前
“这种说法”你试试不就知道了嘛
edwardzcn98
52 天前
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 写法实现多主写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1090654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX