数据库事务ACID介绍

一、ACID简介

ACID,是指数据库管理系统(DBMS)在增删改数据的的过程中,为保证事务(transaction)的准确性,可靠性等,所必须具备的四个特性:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)。

事务(transaction) 由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,并具有ACID特性。

二、四大特性详解

  • 原子性(atomicity):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性(consistency):一致性关注数据的可见性,中间状态的数据对外部不可见,只有最初状态和最终状态的数据对外可见。
  • 隔离性(isolatio):数据库在设计之初,一般都会考虑事务的并发性,不会只让数据库在同一时间只处理一个事务,这样效率会很低,数据库一般会允许多个并发事务同时对其数据进行读写和修改,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。MYSQL数据库中的事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。当事务访问同一资源的时候,如果是增删改的操作,会对资源进行上锁,这些锁要嘛造成死锁,涉及的相关事务会失败回滚,要嘛是先上锁的事务先完成,后续的事务会等前一个事务完成之后再继续执行。如果是读写事务同时访问同一资源,这就会涉及到隔离性级别。
  • 持久性(durability):事务提交处理结束后,对数据的修改就是永久的,即便后续系统故障修改的数据也不会丢失。

猜你喜欢

转载自blog.csdn.net/qq_41768644/article/details/132254126