文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

瞎掰事务(一):四大特性立体关系剖析(最好的解释一致性)

2019-09-13 01:46

关注

瞎掰事务(一):四大特性立体关系剖析(最好的解释一致性)

比较难理解的是一致性的表述。有一种补充解释是一致性保证的是从一种状态到另一种状态的一致维护,而保证不出现中间状态。当注意力放在中间状态时,一致性与隔离性的定义有重叠,当注意力放在两种状态的切换,又与原子性的定义有重叠。所以这样的解释对于深入理解事务的四大特性是不完美的。

四大特性的深入理解

一个完整的事务系统需要数据库,事务框架,业务逻辑三层组成。数据库是事务构成的基石,这也是数据库区别于文件系统的主要特征。在数据库层级上,提供了事务隔离级别的实现。一般的事务隔离级别分为四级

  1. 读未提交:read uncommitted
  2. 读已提交:read committed
  3. 可重复读:repeatable read
  4. 串行化:serializable

本质上,事务的隔离性是由数据库层级上的隔离级别保证的。持久性也是数据库层级所保证的,这个很容易理解。到了原子性,情况发生了变化。 数据库层级提供了commit 和 rollback 的函数,但是这没有提供全部成功和全部失败的原子性完全保证,仍需要事务框架的支持。这就是事务托管方。事务托管方可以是持久化框架如Mybatis,Hibernate等,也有可能是更高一点的框架,如spring framework,还有一种比较容易被忽视的,就是手动编写的完整的具有事务控制的SQL 脚本,这与其他事务托管方所完成的工作几乎一样。当然最常见的还是spring 的事务模块,在下一篇我们可以对spring 事务的细节展开,这里我们继续扣题发挥。最后就是一致性了。一致性的保证是最特殊的,需要数据库,事务框架,业务逻辑自下而上的共同维护。数据库层级提供持久性和隔离性的保证,并提高原子性的能力与事务框架共同提供原子性保证,基于这些下层能力的基础,才能最终在顶层业务的逻辑层完成一致性的保证。所以一致性是数据库状态与其他业务规则保持一致。

用转账的例子 A账号往B账号里转5000,这时候数据库要执行两行代码: A:减去5000 B:加上5000 这是一致性情况,如果代码为 A:减去5000 B:加上5001 这就是对一致性的破坏。

所以认为隔离性和原子性与一致性是有重叠的,更好的解释是他们的关系是因果的链式关系。再看一下他们”非重叠的部分“

隔离级别在RR以上,一致性和隔离性是”吻合“的,但在RR之下,事务内的中间状态对其他事务而言是暴露的。这是对关于一致性对可见性约束的破坏,另一方面也说明他们管辖范围的不同。至于更多的不同或侧重点不需一一赘言。

这里瞎掰了事务四大特性立体的关系,关于更多或者不同的理解您可以留言讨论。后面关于事务有更多的分析,欢迎拍砖

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯