数据库事务的四大特性:ACID

原创 2012年08月12日 21:18:29

事务的4大特性(ACID):

原子性(Atomicity)

事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。

一致性(Consistemcy)

事务前后,数据库的状态都满足所有的完整性约束。

隔离性(Isolation)

并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。通过设置数据库的隔离级别,可以达到不同的隔离效果。

持久性(Durability)

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

并发事务引起的问题:

更新丢失

两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。

脏读

脏读又称无效数据读出。一个事务读取另外一个事务还没有提交的数据叫脏读。

例如:事务T1修改了一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因Rollback了,那么事务T2读取的数据就是脏的。

不可重复读

不可重复读是指在同一个事务内,两个相同的查询返回了不同的结果。

例如:事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

幻读

事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据

例如:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样。这就叫幻读。

事务的隔离级别:

以上的4种问题(更新丢失、脏读、不可重复读、幻读)都和事务的隔离级别有关。通过设置事务的隔离级别,可以避免上述问题的发生。

未授权读取级别:

也称为读未提交(Read Uncommitted)。

以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他写事务(但允许其他读事务)。

此隔离级别可以防止更新丢失,但不能防止脏读、不可重复读、幻读

此隔离级别可以通过“排他写锁”实现。

授权读取级别:

也称为读提交(Read Committed)。

以操作同一行数据为前提,读事务允许其他读事务和写事务,未提交的写事务禁止其他读事务和写事务。

此隔离级别可以防止更新丢失、脏读,但不能防止不可重复读、幻读

此隔离级别可以通过“瞬间共享读锁”和“排他写锁”实现。

可重复读取级别:

可重复读取(Repeatable Read)。

以操作同一行数据为前提,读事务禁止其他写事务(但允许其他读事务),未提交的写事务禁止其他读事务和写事务。

此隔离级别可以防止更新丢失、脏读、不可重复读,但不能防止幻读

此隔离级别可以通过“共享读锁”和“排他写锁”实现。

序列化级别:

序列化(Serializable)。

提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。

此隔离级别可以防止更新丢失、脏读、不可重复读、幻读

如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免更新丢失、脏读,而且具有较好的并发性能。尽管它会导致不可重复读、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

版权声明:本文为博主原创文章,未经博主允许不得转载。

数据库事务的四大特性

事务四大特性(简称ACID)  1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 2、一致性(Consistency):几个并行执行的事务,其执行...
  • bl0520
  • bl0520
  • 2017年04月13日 16:46
  • 1232

数据库事务四大特性

数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全做要么全不做,是一个不可分割的工作单位。 数据库事务的四大特性(简称ACID)是: (1) 原子性(Atomicity) ...
  • wolenski
  • wolenski
  • 2012年09月14日 20:16
  • 35372

MySql数据库事务的4大特性

这个问题经常会在一些面试题中被问到。总得来说,数据库事务的4大特性可以简称为ACID。 1、原子性(Atomicity) 事务中包含的程序作为数据库的逻辑工作单位,它对数据库中的数据进行操作时,要...
  • LULEI1217
  • LULEI1217
  • 2016年03月22日 13:08
  • 4475

数据库事务的四大特性以及事务的隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。   如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity)...
  • wj123446
  • wj123446
  • 2017年02月21日 20:20
  • 483

Oracle、Mysql之事务及四大特性

一、什么是事务? 概念:事务是指单个逻辑工作单元执行的一系列操作,用于保证数据的安全有效.要么完全地执行,要么完全地不执行; SQL语句就是自身的一个事务。 SQL语句有:DML/DDL/DCL/TC...
  • JustinQin
  • JustinQin
  • 2017年09月07日 10:06
  • 294

事务是什么,以及事务四个特性

一.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。 ...
  • xiaoyu714543065
  • xiaoyu714543065
  • 2012年11月22日 10:57
  • 70780

oracle如何保证事务的ACID原则--oracle核心技术读书笔记二

在事务中有四个通用的原则是所有数据库都必须遵守的,简称ACID原则,下面简单概述一下oracle是怎样实现这四个原则的。          一. 原子性(Atomicity):一个事务要么全...
  • liwenshui322
  • liwenshui322
  • 2014年09月21日 11:15
  • 1549

oracle学习笔记 事务ACID及隔离级别

oracle学习笔记 事务ACID及隔离级别 隔离级别:isolation level 一)事务的含义 我们继续看事务,看事务的含义 事务的含义有一个说法叫ACID A就是原子性 ...
  • xinzhan0
  • xinzhan0
  • 2017年06月07日 15:54
  • 439

Oracle 事务ACID基本概念(原子性、一致性、隔离性、持久性)

Oracle 事务ACID基本概念(原子性、一致性、隔离性、持久性)
  • Seandba
  • Seandba
  • 2017年06月01日 11:44
  • 1091

事务的概念和四大特性以及事务的隔离级别

事务事务:是用户定义的一个操作序列。这些操作,要么都做,要么都不做。是一个不可分割的工作单位。通过事务,数据库可以把逻辑相关的一组操作绑定在一起,以便数据库服务器保持数据的完整性。事务通常是以BEGI...
  • zwq1232113457
  • zwq1232113457
  • 2016年12月03日 10:43
  • 1151
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库事务的四大特性:ACID
举报原因:
原因补充:

(最多只允许输入30个字)