gpt4 book ai didi

mysql - MySQL 的分片和事务

转载 作者:可可西里 更新时间:2023-11-01 06:59:02 24 4
gpt4 key购买 nike

通过分片,您如何在多个数据库服务器上维护可靠的事务?

例如,如果我在一个数据库服务器(MySQL 实例)上有一个名为 AccountLedger 的表,在另一个数据库服务器上有一个名为 User 的表,是否可以运行跨两个数据库实例的事务都将可靠地提交或在失败时回滚?

示例交易:

AccountLedger 数据库服务器:

START TRANSACTION;
INSERT INTO AccountLedger SET
UserID = @UserID,
Date = @Date,
Debit = @Debit,
Balance = @Balance;

用户数据库服务器:

START TRANSACTION;
UPDATE User SET
Balance = @Balance
WHERE UserID = @UserID;

AccountLedger 数据库服务器:

COMMIT;

用户数据库服务器:

COMMIT; -- What happens if the COMMIT fails here (power goes out or whatever)

我已经阅读了很多关于分片的文章,但我似乎找不到任何关于将事务与分片结合使用的信息。有人可以指出我正确的方向吗?

最佳答案

使用分布式事务可以做到这一点。它们由 InnoDB 存储引擎支持。您将在 MySQL 文档中找到关于它们和命令语法的更多信息:XA Transactions

我建议不要直接使用它们。如果一致性是 ypur 应用程序的最高要求,那么使用可以处理它的事务监视器。 Java EE 会为您做到这一点。

但是,如果可用性比一致性更重要,您应该避免分布式事务。 CAP 定理解释了原因。

关于mysql - MySQL 的分片和事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com