数据库事务四个特性

本文详细介绍了数据库事务的四个关键特性:原子性、一致性、隔离性和持久性,以转账为例说明了它们的概念,并探讨了并发环境中的隔离问题以及SQLServer中使用Write-AheadLogging保证事务持久性的方法。
摘要由CSDN通过智能技术生成

数据库事务四个特性

ACID特性

数据库管理系统中事务(transaction)的四个特性(分析时根据⾸字母缩写依次解释):原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)、持久性(Durability)

所谓事务,它是⼀个操作序列,这些操作要么都执⾏,要么都不执⾏,它是⼀个不可分割的⼯作单位。(执⾏单个逻辑功能的⼀组指令或操作称为事务)

1. 原⼦性

原⼦性是指事务是⼀个不可再分割的⼯作单元,事务中的操作要么都发⽣,要么都不发⽣。

可采⽤“A向B转账”这个例⼦来说明解释

在DBMS中,默认情况下⼀条SQL就是⼀个单独事务,事务是⾃动提交的。只有显式的使⽤start transaction开启⼀个事务,才能将⼀个代码块放在事务中执⾏。

2. ⼀致性

⼀致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的⼀致性。

如A给B转账,不论转账的事务操作是否成功,其两者的存款总额不变(这是业务逻辑的⼀致性,⾄于数据库关系约束的完整性就更好理解了)。

保障机制(也从两⽅⾯着⼿):数据库层⾯会在⼀个事务执⾏之前和之后,数据会符合你设置的约束(唯⼀约束,外键约束,check约束等)和触发器设置;此外,数据库的内部数据结构(如 B 树索引或双向链表)

3. 隔离性

多个事务并发访问时,事务之间是隔离的,⼀个事务不应该影响其它事务运⾏效果。

在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各⾃的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另⼀事务修改它之前的状态,要么是另⼀事务修改它之后的状态,事务

不会查看到中间状态的数据。事务最复杂问题都是由事务隔离性引起的。完全的隔离性是不现实的,完全的隔离性要求数据库同⼀时间只执⾏⼀条事务,这样会严重影响性能。

4. 持久性

这是最好理解的⼀个特性:持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。(完成的事务是系统永久的部分,对系统的影响是永久性的,该修改即使出现致命的系统故障也将⼀直保持)write ahead logging:SQL Server中使⽤了WAL(Write-Ahead Logging)技术来保证事务⽇志的ACID特性,在数据写⼊到数据库之前,先写⼊到⽇志,再将⽇志记录变更到存储器中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值