什么是数据库事务
-
数据库事务,简称事务,是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。(来自百度文库)
-
事务是满足数据库事务四个特性的一组操作,这四个特性可记为:ACID(自己理解)
其中: -
A: Atomicity原子性,表示事务被看做不可分割的最小单位,对于本次事务的所有操作,要么全部成功,要么全部回滚(失败)
-
C:Consistency一致性,表示数据库在事务的执行过程中都保持一致状态,即事务执行前后,需要保证数据库状态一致,所有的事务针对同一个状态的数据库进行操作,对一个数据的读取结果是相同的。
-
I:Isolation隔离型,表示一个事务在本身的所有操作执行结束之前,对其他事务是不可见的
-
D:Durability持久性,表示事务一旦提交到数据库,对数据库中数据的修改是永久的。(可使用重做日志保持持久性)
补充:当事务commit时,必须将事务的全部日志写入重做日志文件进行持久化,待完成后事务commit的操作才算完成,即日志前写规则。详细请看此博主博客点我
这有一段很不好理解的话,来自一本书(博主表示一知半解):
- 只有满足一致性,事务的执行结果才是正确的。(因为满足了一致性才能保证是对同一状态的数据库的同一个数据的读取结果是相同的)
- 在无并发的情况下,事务串行执行,隔离性一定能够满足。此时只要能满足原子性,就一定能满足一致性。(因为事务分为先后执行,事务之间隔离)
- 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性
- 事务满足持久化是为了能应对数据库崩溃的情况。
最后来一张图: