事务的基本特性及隔离级别

1.事务的特性有4个:原子性(Atomicity) 、一致性(Consistency)、隔离性(Isolation) 、持久性(Durability)
2.事务的隔离级别有4种:Read uncommitted(读未提交) 、Read committed(读已提交) 、Repeatable read(可重复读) 、Serializable(可串行化)

事务的基本要素(ACID)

1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。   

3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

事务的隔离级别

1、第一种隔离级别:Read uncommitted(读未提交

如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据,该隔离级别可以通过“排他写锁”,但是不排斥读线程实现。这样就避免了更新丢失,却可能出现脏读,也就是说事务B读取到了事务A未提交的数据。

解决了更新丢失,但还是可能会出现脏读。

2、第二种隔离级别:Read committed(读已提交

如果是一个读事务(线程),则允许其他事务读写,如果是写事务将会禁止其他事务访问该行数据,该隔离级别避免了脏读,但是可能出现不可重复读。事务A事先读取了数据,事务B紧接着更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。

解决了更新丢失和脏读问题。

3、第三种隔离级别:Repeatable read(可重复读取

可重复读取是指在一个事务内,多次读同一个数据,在这个事务还没结束时,其他事务不能访问该数据,这样就可以在同一个事务内两次读到的数据是一样的,因此称为是可重复读隔离级别,读取数据的事务将会禁止写事务,写事务则禁止任何其他事务,这样避免了不可重复读和脏读,但是有时可能会出现幻读。

读取数据的事务可以通过“共享读镜”和“排他写锁”实现。

解决了更新丢失、脏读、不可重复读、但是还会出现幻读。

4、第四种隔离级别:Serializable(可串行化

提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行,如果仅仅通过“行级锁”是无法实现序列化的,必须通过其他机制保证新插入的数据不会被执行查询操作的事务访问到。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
事务是指一组操作被视为一个单独的工作单元,并且要么全部完成,要么全部撤销。事务具有以下四个基本特性: 1. 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部失败回滚,不允许只执行其中一部分操作。 2. 一致性(Consistency):事务执行前后,系统的数据状态必须保持一致。 3. 隔离性(Isolation):事务之间是相互隔离的,一个事务执行过程中,其对数据库的修改在提交前,对其他事务是不可见的。 4. 持久性(Durability):事务一旦提交,它对数据库的修改就是永久性的,即使系统崩溃也不会丢失。 事务隔离级别是指多个并发事务之间的隔离程度,包括以下四种级别: 1. 读未提交(Read Uncommitted):一个事务还没有提交时,它做的修改就能被其他事务看到。 2. 读已提交(Read Committed):一个事务提交后,它的修改才能被其他事务看到。 3. 可重复读(Repeatable Read):一个事务执行期间,多次读取同一个数据,读到的数据始终保持一致。 4. 串行化(Serializable):所有事务按照顺序一个一个执行,不存在并发问题。 事务的传播机制是指在一个事务中调用其他事务时,它们之间的关系。主要有以下四种传播机制: 1. REQUIRED:默认传播机制,如果当前没有事务,则新建一个事务,如果已经存在事务,则加入该事务。 2. REQUIRES_NEW:每次都会新建一个事务,如果当前存在事务,则挂起该事务,等新事务执行完毕后再恢复。 3. SUPPORTS:如果当前存在事务,则加入该事务,如果没有事务,则以非事务方式执行。 4. NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则挂起该事务,等非事务执行完毕后再恢复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值