您的位置:首页 > 数据库

事务处理的四大特性详解

2017-08-24 22:44 267 查看
转自:http://blog.csdn.net/shuaihj/article/details/14163713

首先事务是访问并可能更新数据库中各种数据项的一个程序执行单元,也就是所谓的原子性 他是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的一部分。

事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability).这是可靠数据库所应具备的几个特性.下面针对这几个特性进行逐个讲解.

1、原子性

原子性是指事务是一个不可分割的工作单位,事务中的操作要么成功要么失败。

举个简单的例子:

A给B转账,A钱少了B钱多了,成功,事务提交成功,失败回滚



--开启事务,这是推荐的操作
start transaction

update account set money= money - 100where name='A';
update account set money= money +100where name='B';

if Error then
rollback
else
commit


2、一致性

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

1.案例

对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNT表中aaa和bbb的存款总额为2000元。

保障事务的一致性,可以从以下两个层面入手

a、数据库机制层面

数据库层面的一致性是,在一个事务执行之前和之后,数据会符合你设置的约束(唯一约束,外键约束,Check约束等)和触发器设置。这一点是由SQL SERVER进行保证的。比如转账,则可以使用CHECK约束两个账户之和等于2000来达到一致性目的

b、业务层面

对于业务层面来说,一致性是保持业务的一致性。这个业务一致性需要由开发人员进行保证。当然,很多业务方面的一致性,也可以通过转移到数据库机制层面进行保证。

3、隔离性

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

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

4、持久性

事务一旦提交成功,收据存储将是永存的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  事务 数据库