加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

使用MySQL进行分片和事务处理

发布时间:2021-04-02 08:21:59 所属栏目:MySql教程 来源:网络整理
导读:通过分片,如何在多个数据库服务器之间维护可靠的事务? 例如,如果我在一个数据库服务器(MySQL实例)上有一个名为AccountLedger的表,而在另一个数据库服务器上有一个名为User的表,是否可以跨两个数据库实例运行一个事务,该事务既可以提交,也可以在失败时回滚?

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

例如,如果我在一个数据库服务器(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定理解释了原因.

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读