事务的ACID特性及概念

事务的概念

所谓事务是用户自定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条sql语句,一组sql语句或整个程序。

事务和程序是两个概念,一般来讲,一个程序中包含多个事务。

事务的开始与结束可以由用户显示控制。如果用户没有显示的定义事务,则由数据库管理系统按默认规定自动划分事务。在SQL中,定义事务的语句一般有三条:

1.BEGIN TRANSACTION

2.COMMIT

3.ROLLBACK

事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROOLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体的说就是将事务中的所有对数据库的更新写回到磁盘上的物理数据库中,事务正常的结束。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始是的状态,这里的操作指对数据库的更新操作。

事务的ACID特性

事务具有4个特性:原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持续性(Durability)。这4个特性简称为ACID特性。

(1)原子性

事务是数据库的逻辑工作单元,事务中包括的诸单元要么全做,要么全部做。

(2)一致性

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库中只包含成功事务提交的结果时,就说数据库处于一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就发生被迫中断,这些未完成的事务对数据库所做的修改有一部分已写入物理数据库,这时的数据库就处于一种不正确的状态,或者说不一致的状态。例如,某公司在银行中有A,B两个账户,现在公司想在A账户中去除1万元,存入账户B,那么就可以定义成一个事务,还事务包括两个操作,第一个是从A账户中取出1万元,第二个操作是在B账户中存入1万元。这两个操作要么全做,要么全不做,全做或者全部不做,数据库都处于一种一致性的状态。如果只做一个操作,则逻辑上就会发生错误,减少或增加一万元,这时数据库就处于一致性状态。可见一致性与原子性是密切相关的。

(3)隔离性

一个事务的执行不能被其他的事务干扰。即一个事务的内部操作及使用的数据库对其它并发事务是隔离的,并发执行的各个事务之间是不能相互干扰的。数据库允许多个并发事务同时对数据进行读写和修改的能力,隔离性可以防止多个事务并发执行是由于交叉执行而导致数据的不一致。事务隔离分为不同的级别,包括读未提交,读提交,可重复读和串行化。

(4)持久性

事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

猜你喜欢

转载自blog.csdn.net/IBLiplus/article/details/82750230