数据库的事务指的是什么?


本文摘自PHP中文网,作者青灯夜游,侵删。

数据库的事务指的是:作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行;简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。

你用支付宝去去超市买东西,100块钱转给超市,其实这是两步:

  • 第一步,在支付宝数据库中你的账户减去100;

  • 第二步,在超市的支付宝账户上加上100元,交易完成;

但是如果第一步完成了,还没执行第二步的时候,停电了会发生什么呢?

会发生,你的账户减少了100块,超市的账户金额没变,这不就出现问题了,不得打架了吗?

为了解决这个数据一致性问题,数据库事务应运而生。

事务指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。

它是数据库维护数据一致性的单位,它将数据库从一致状态转变为新的一致状态,说的简单一点就是,如果一组处理步骤要么全部发生要么一步也不执行,我们称该组处理步骤为一个事务。这样就保证了数据始终一致的状态,不至于破坏数据的完整性、可靠性。一个事务执行以后,DBMS会自动检查数据库中数据的一致性。

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

1、原子性

事务是一个完整的操作。事务的各元素是不可分的(原子的)。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。

以银行转账事务为例,如果该事务提交了,则这两个账户的数据将会更新。如果由于某种原因,事务在成功更新这两个账户之前终止了,则不会更新这两个账户的余额,并且会撤销对任何账户余额的修改,事务不能部分提交。

2、一致性

当事务完成时,数据必须处于一致状态。也就是说,在事务开始之前,数据库中存储的数据处于一致状态。在正在进行的事务中. 数据可能处于不一致的状态,如数据可能有部分被修改。然而,当事务成功完成时,数据必须再次回到已知的一致状态。通过事务对数据所做的修改不能损坏数据,或者说事务不能使数据存储处于不稳定的状态。

以银行转账事务事务为例。在事务开始之前,所有账户余额的总额处于一致状态。在事务进行的过程中,一个账户余额减少了,而另一个账户余额尚未修改。因此,所有账户余额的总额处于不一致状态。事务完成以后,账户余额的总额再次恢复到一致状态。

3、隔离性

对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。

另外,当事务修改数据时,如果任何其他进程正在同时使用相同的数据,则直到该事务成功提交之后,对数据的修改才能生效。张三和李四之间的转账与王五和赵二之间的转账,永远是相互独立的。

4、持久性

事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。

一个事务成功完成之后,它对数据库所作的改变是永久性的,即使系统出现故障也是如此。也就是说,一旦事务被提交,事务对数据所做的任何变动都会被永久地保留在数据库中。

事务的 ACID 原则保证了一个事务或者成功提交,或者失败回滚,二者必居其一。因此,它对事务的修改具有可恢复性。即当事务失败时,它对数据的修改都会恢复到该事务执行前的状态。

以上就是数据库的事务指的是什么?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql数据库如何锁定和解锁数据库表?

如何创建一个数据库

mysql数据库中如何进行子查询

数据仓库和数据库的区别是什么?

数据库记录删除方式 有哪些

数据库模式进行规范化处理,是在数据库设计的什么阶段?

介绍 mysql-innodb 事物学习

drivermanager连接mysql数据库在实际开发中使用

navicat连接数据库报错2005怎么办

mysql数据库绿色版出现系统错误1067怎么办?

更多相关阅读请进入《数据库》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...