账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    分布式事务的预提交要怎么理解?
    54
    0
    一、前提。关于分布式事务,里面有个预提交的说法,而对于这个概念的描述,根据我查到的资料来说,就是:完成除了正式提交事务以外的其他事情(参与者执行事务中包含的操作,并记录undo日志(用于回滚)和redo日志(用于重放),但不真正提交)。二、问题对于上面的说法,我用一段下单的伪代码为例子(取消了DB的自动提交事务,然后写入sql语句)`BEGIN去订单表生成订单;去库存表锁住库存并扣减库存;COMMIT`三、描述根据上面的伪代码,预提交是否理解为:事务执行到库存那一步,停下来,如果成功锁住了订单表和库存表的相关数据。则向分布式事务框架的协调者这一角色返回成功的ack,然后分布式事务进入正式提交阶段,此时伪代码继续往下走,完成commit?我在网上找到的资料,对于预提交这部分内容讲的比较少,不知道我这样理解对不对?如果不对,请指教,谢谢!
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 难与人说 普通会员 1楼

      分布式事务的预提交是在分布式环境下,将数据库事务中的部分或者全部操作提交到分布式事务服务器中,然后提交整个事务。这样可以确保事务的原子性、一致性、隔离性和持久性,避免在分布式环境下出现数据不一致的情况。

      预提交操作的实现方式有很多,例如在MySQL中,可以通过使用START TRANSACTION;语句来开始一个预提交的事务;在JDBC中,可以通过使用JDBCConnection.setAutoCommit(false);语句来开始一个预提交的事务。在Spring框架中,可以通过使用@Pre提交注解来开启一个预提交的事务。

      在Java中,可以使用JDBCConnection.setAutoCommit(false);来开启一个预提交的事务。在Spring框架中,可以使用@Pre提交注解来开启一个预提交的事务。

      需要注意的是,预提交操作只能在数据库服务器端开启,不能在应用程序中开启。因为预提交操作会将事务中的部分或者全部操作提交到数据库服务器中,然后提交整个事务,这会导致应用程序无法与数据库服务器进行交互,从而影响应用程序的正常运行。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部