Transaction-事务

数据库事务确保操作的原子性、一致性、隔离性和持久性。在并发环境下,事务的隔离性至关重要,防止脏读、不可重复读和幻读等问题。并发控制通过悲观锁、乐观锁和多版本并发控制(MVCC)等机制保证一致性。事务隔离级别包括未提交读、提交读、可重复读和串行化。
摘要由CSDN通过智能技术生成

事务

  数据库事务,是指作为单个逻辑工作单元的一系列操作,要么完全执行,要么完全不执行。事务中有的操作没有成功完成,整个事务中的所有操作都需要被回滚。


image.png | center | 429x418

ACID

  数据库事务拥有以下四个特性,习惯上称为:ACID。在数据库领域,ACID模型是最古老并且最重要的概念之一。

  • 原子性(Atomicity):原子在当时被认为是最小的物质,也就意味着不可在分。事务被视为是不可分割的最小单元,事务中的所有操作要么全部提交成功,要么全部失败回滚。

  • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。

  • 隔离性(Isolation):主要描述多个事务之间的关系,多个事务并发执行时,一个事务的执行不应该影响其他事务的执行。也就是说一个事务所做的修改在commit之前,对其他事务是不可见的。

  • 持久性(Durability):已经被提交的事务对数据的修改应该永久保存在数据库中,即使系统崩溃,事务执行结果也不能丢失。

  事务的ACID特性概念定义简单,但是有的特性并不是很好理解,因为这些特性不是平级关系,比如一致性。一致性C是事务最终的目的,而AID都是手段。
  一致性状态实际上依赖于应用层,也就是开发者自己去定义的。举个栗子,大家最喜欢用的银行转账:

A向B转账100元,那么对应的操作应该有两步:1,A账户-100元;2,B账户+100元。那么我们这个事务中的两步操作是为了满足事务前后的一致性状态:总金额一致,但是这个一致性状态本身和数据库的约束没有关系,是由我们的业务决定的。


image.png | center | 625x317

  1. 事务的最终目的是要满足一致性,这样的执行结果才是正确的(符合我们业务要求)
  2. 如果事务串行执行,只要事务满足原子性,其执行结果就可以满足一致性
  3. 如果事务并行执行,也就是并发的情况下,既要满足原子性又要满足隔离性,才能最终满足一致性
  4. 持久性是指要永久保存执行结果,即使数据库崩溃,可以理解为执行结果要保存到磁盘中

并发一致性

  上文提到事务串行执行,只要满足原子性就可以满足一致性,但是如果在并发情况下,还需要满足隔离性才能满足一致性,

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值