数据库之事务的四大特性

一:原子性(Atomicity)#

事务是数据库执行的最小单位 不可被分割 ,这个单位里包含了一系列操作(DML),事务的原子性保证数据要么同时执行成功 要么同时执行失败,简单来说:数据库对数据进行操作的时候会将操作写入日志(此日志非传统的日志 可能是缓存 可能是文件)进行保存,如果中间某个事务执行失败,数据库会通过该日志进行回溯,将执行成功的操作进行撤销,专业术语称之为(回滚),如果所有的事务都执行成功,可以通过commit将执行成功的操作提交到数据库进行保存,专业术语(持久化),数据一旦被持久化 便不可在进行回滚

PS:总结起来一句话 原子性保证事务的同事要么同时执行成功 要么同时执行失败

二:一致性(Consistemcy)#

如果把事务比作是一扇门,a,b,c作为一个整体穿过这扇门,成功的穿过之后,就变成了 A,B,C;那么我们来看,事务执行完毕前,abc三者保持了一致性,事务执行完毕之后,ABC三者保持了一致性。对于数据库事务来说,不可能出现AbC或者abC等不一致的情况;

那么我们可以认为:原子性是事务一致性的保证!!
PS:总结起来一句话 在事务执行前后 对于不同的事务读取同一数据的结果是相同的

三:持久性(Durability)#

简单来说,事务提交后,数据会真正保存到数据库(生米煮成熟饭了),就不能回滚了(熟了还能再弄成生米??)

 PS:总结起来一句话 在事务通过commit提交之后 对于数据库的数据便会永久生效 不会再有回滚改变的可能

四:隔离性#

这个特性我先举个例子:有个浴室(外面无法偷看),假设每次只能进去一个人,在这个人出来之前,另外一个人不能进去,那么已经进去的这个人根本就不用担心被别人看光,因为浴室里就他一个人。但是外边的其他人就会等不及,显然浴室不够用;那么我们是不是把浴室隔成隔断间,那是不是很多人能一起进入浴室,使用不同的隔断间洗澡了~(当然,一个隔断间还是只允许一个人进去)

我们回到数据库事务,数据库就想到了一个办法,对于并发执行的事务隔离开,相互之前不影响执行!如果有两个相同的事务,在相同的时间内,执行相同的功能,这时候事务的隔离性起作用了,它会确保每一个事务在系统中认为只有自己在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。通过设置数据库的隔离级别,可以达到不同的隔离效果(后面的篇章中会讲到spring事务的隔离级别和传播机制)。
PS:总结起来一句话 在不同的事务之间操作是完全独立的 不同的事务操作不会被其余的事务进行骚扰

 

posted @   SR丶  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
CONTENTS