数据库事务的ACID特性是什么意思?

2024年5月4日15:52:17数据库事务的ACID特性是什么意思?已关闭评论

事务的概念

数据库的某些操作不能分割。例如,学生持校园卡在商户消费似乎是一个独立的操作,但在数据库系统中却是由以下两个步骤组成的,首先从校园卡A的余额中减去 ,然后将金额 加到商户B的营业额中。消费开始之前和完成之后,校园卡A的余额与商户B的营业额之和应是不变的。如果校园卡A的余额被扣减后,系统出现故障或断电使商户B的营业额并没有增加,会造成总金额前后不一致的错误结果。

为了解决这类问题,在数据库中引入了事务的概念。所谓事务,是指一个不可分割的逻辑工作单元的操作集合。例如消费时,扣减校园卡余额和增加商户营业额这两个操作是一个事务中不可分割的逻辑工作单元。

事务的特性

为了保证数据库中的数据总是正确的,事务具有原子性(Atomic)、一致性(Con-sistent)、隔离性(Isolated)和持久性(Durable)等四个特性,简称事务的ACID特性。

1. 原子性

原子是化学反应中的基本微粒。数据库用原子性来描述事务是一个不可再分的逻辑工作单元。一个事务内的操作无论多么复杂,都要作为一个整体来执行,所有操作要么都执行,要么都不执行,不允许部分执行。例如,校园卡在商户消费的事务中,要么消费成功,校园卡A的余额减去 ,商户B的营业额增加 ;要么消费被取消,校园卡A的余额和商户B的营业额都不变,不会出现校园卡A的余额被扣减而商户B的营业额没有增加的情况。

2. 一致性

一致性是指一个事务执行成功或者部分执行的操作被撤销,事务执行前后的数据是一致的。例如,上述校园卡在商户消费的事务执行前后,校园卡A的余额和商户B的营业额之和是一致的。

3. 隔离性

数据库系统为了提高效率,允许多个事务并发执行。隔离性是指多个事务并发执行的结果与这些事务串行执行的结果是一样的。

4. 持久性

持久性是指事务一旦提交,其对数据的更新就反映在数据库中。

事务执行过程中,对数据所做的更新都会被记录在日志中。如果事务中途发生错误,日志会由后向前逐步撤销已经执行的事务操作,使数据恢复到事务执行前的状态,从而保证了事务的原子性、一致性。当事务成功执行并提交之后,事务中的所有操作不能再撤销,事务对数据所做的更新都将反映在数据库中,这样保证了事务的持久性。

关系型数据库管理系统通过并发控制支持事务的隔离性。当事务并发有可能造成数据不一致时,系统会采用封锁机制强制持有锁的事务和等待锁的事务隔离开来,保证事务并发时不会发生丢失修改、脏读、不可重复读等数据不一致的问题。

事务机制及事务的ACID特性使关系型数据库广泛应用在对事务一致性有要求的系统中。金融、证券、电力和电信运营商等行业的核心业务系统都离不开关系型数据库支撑。

  • A+
所属分类:SQL
  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。