结束事务的其他情景

结束事务的其他情景

在这里插入图片描述

除了提交 commit 或 rollback 指令,结束事务还可以由其他情景触发,要么作为活动的间接结果,要么作为意外的结果:

  • 服务器宕机,在这种情况下,服务器重启时事务将会被自动回滚;
  • 提交一个 SQL 模式语句,比如 alter table,这将会引起当前事务提交和一个新事务启动;
  • 提交一个 start transaction 命令,将会引起前一个事务提交;
  • 因为服务器检测到一个死锁并且确定当前事务就是罪魁祸首,那么服务器就会提前结束当前的事务。这种情况下,事务将会被回滚,同时释放错误消息。

注意:“服务器宕机”有两种情况。假设现在有两个 update 语句在同一个逻辑工作单元,那么

  1. 如果程序设法完成两个 update 语句后,还没有执行 commit 或 rollback 命令,服务器突然宕机了,那么事务会在服务器重新上线后被回滚。(数据库服务器上线前必须完成的任务之一就是查找宕机前正在运行但未完成的事务,并将其回滚。)
  2. 如果程序完成了事务,并发出了 commit 指令,还没有将变化持久化到永久存储区(也就是说,修改的数据还位于内存,但没有被刷新到磁盘),服务器就宕机了,那么服务器重启时数据库服务器必须重新应用事务的变化(这种属性称为持久性)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值