一致性就是相合性_数据库中事物的四大特性

一致性就是相合性_数据库中事物的四大特性事务的特性 dddddddd 原子性,事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败; 一致性,事务执行后,数据库状态与其它业务规则保持一致; 隔离性,指在并…

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

  • 原子性,事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败;
  • 一致性,事务执行后,数据库状态与其它业务规则保持一致;
  • 隔离性,指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。
  • 持久性, 一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据

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

四大特性的深入理解

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

  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之下,事务内的中间状态对其他事务而言是暴露的。这是对关于一致性对可见性约束的破坏,另一方面也说明他们管辖范围的不同。至于更多的不同或侧重点不需一一赘言。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9582.html

(0)
上一篇 2023-02-05
下一篇 2023-02-05

相关推荐

  • Python判断字符串为空的方法

    Python判断字符串为空的方法a href=”https://beian.miit.gov.cn/”苏ICP备号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-07-02
    48
  • 优化获取数据的利器——Python GET请求方式

    优化获取数据的利器——Python GET请求方式HTTP协议是Web应用中最常用的协议之一,基于HTTP协议的GET请求方式是最常见的数据传输方式。GET请求方式是一种向服务器请求数据的方式,它通过URL在服务器与客户端之间传递请求数据。客户端通过HTTP协议向服务器发送请求,服务器通过HTTP协议响应请求,将数据返回给客户端。

    2024-01-27
    108
  • Python正则表达式解析实现

    Python正则表达式解析实现Python中的正则表达式是一种常用的文本处理工具,通过使用一定的符号表示法来描述字符集合、分组、重复等规则,对文本进行匹配、查找、替换等操作。在Python中,re模块就是专门用于正则表达式操作的标准模块,它提供了一系列强大而灵活的函数和方法,可以满足各种不同的文本处理需求。

    2024-03-24
    79
  • python自动上传文件到网页(python怎么上传文件)

    python自动上传文件到网页(python怎么上传文件)做的是web开发吗?可以用框架来解决这个问题,推荐使用Django框架,灵活强大,特别适合做新闻、博客类网站。用Python上传文件,要用到中间件,找一个适合你用的中间件,通过这个中间件上传,如果是自己写的话会很麻烦。存入数据库的不应该是文件而应该是文件的路径,存入了多少条数据这个就比较好实现了,用一个计数变量,保存一条就增加1,最后返回这个变量就可以了。

    2023-11-26
    106
  • 新特性解读 | mysql 8.0 memcached api 新特性[亲测有效]

    新特性解读 | mysql 8.0 memcached api 新特性[亲测有效]作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生…

    2023-03-18
    155
  • 如何下载并安装mysql_下载MySQL

    如何下载并安装mysql_下载MySQL下载: 1.下载地址:https://www.mysql.com/downloads/ 2.选择社区版:MySQL Community (GPL) Downloads » 3.MySQL C

    2022-12-20
    145
  • 关于python基础知识整合的信息

    关于python基础知识整合的信息以下是python全栈开发课程学习路线,可以按照这个课程大纲有规划的进行学习:

    2023-11-26
    126
  • c语言重写python代码(python编译成c代码)

    c语言重写python代码(python编译成c代码)由于近几年人工智能的不断发展,Python也跟着火了,因为Python是深度学习技术的主流应用编程语言。同时它的应用场景很多,被称为“胶水语言”。优妹儿就帮小伙伴们科普一下,Python这门神奇编程语言的发展趋势,以及语言特性,帮助想要学习Python的小伙伴们,更清晰的了解它。

    2023-11-26
    137

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注