1、事务概念
- 对于用户而言,事务是具有完整逻辑意义的数据库操作序列的集合。
- 对于数据库管理系统而言,事务则是一个读写操作序列。这些操作是一个不可分割的逻辑工作单元,要么都做,要么都不做。
- 事务是数据库管理系统中竞争资源、并发控制和恢复的基本单元。 它是由数据库操作语言(如SQL)或高级编程语言(如Java、C、C++)提供的事务开始语句、事务结束语句以及由它们包含的全部数据库操作语句组成。
事务是实现数据库中数据一致性的重要技术。数据库事务是一个不可分割的逻辑工作单元。对其概念的理解需要注意以下几点:
- 事务中包含的操作可以是一个,也可是多个,但这些操作必须构成一个逻辑上的整体。
- 构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,即不管事务是否执行成功,用户看到的数据总能保持一致性。
- 事务执行的结果是使数据库从一种一致性状态转变到另一种一致性状态。
-
MySQL支持4种事务模式
MySQL中对事务的管理
MySQL中对事务的管理的操作包括启动、结束和回滚,常用的语法格式:
2、事务的性质
为了保证事务并发执行或发生故障时数据库的一致性(完整性),事务应具有以下ACID特性: 原子性(atomicity)。事务的所有操作要么全部都被执行,要么都不被执行。
- 一致性(consistency)。一个单独执行的事务应保证其执行结果的一致性,即总是将数据库从一个一致性状态转化到另一个一致性状态。
- 隔离性(isolation)。当多个事务并发执行时,一个事务的执行不能影响另一个事务,即并发执行的各个事务不能互相干扰。
- 持久性(durability)。一个事务成功提交后,它对数据库的改变必须是永久的,即使随后系统出现故障也不会受到影响。
【1】原子性(Atomicity)
原子性(Atomicity)意指事务中的所有操作作为一个整体像原子一样不可分割。
- 操作要么都执行,要么都不执行。
一旦在执行某一步骤的过程中发生故障,就需要执行回滚操作,撤销前述操作。
【2】一致性(Consistency)
一致性(Consistency)指数据库始终保持一致性。
事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态。
执行事务之前和执行之后,account1和account2的总金额保持一致。
【3】隔离性(Isolation)
隔离性(Isolation)指并发执行的事务之间不会相互影响。
事务未提交(COMMIT)时,account1和account2账户的金额都不会发生变化。
如果同时account3向account2转账,当两个事务都执行结束的时候,结果应与两个事务分别执行的结果一致。
【4】持久性(Durability)
持久性(Durability)指一个事务被提交后,对数据库中数据的改变是永久性的。
转账成功,两个账户里的金额就会写入数据库做持久化保存。
- 数据库系统遇到故障的情况下也不会丢失提交事务的操作。