Java面试宝典:MySQL事务和事务的隔离级别
一. 事务和事务的隔离级别
1. 为什么需要事务
事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位(不可再进行分割),由一个有限的数据库操作序列构成(包含多个DML语句,select语句不包含事务),其执行结果必须是“要不全部成功,要不全部失败”。
示例说明: A 给 B 划钱,A 的账户需 -1000元, B 的账户需 +1000元。这两个 update 语句必须作为一个整体来执行。否则,如果出现 A 扣钱了但 B 没有加钱的情况,就是错误的。事务机制可以保证 A、B 账户的变动要么全部一起发生,要么全部一起不发生。
2. 事务特性
事务应具备 4 个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。这四个属性通常称为 ACID 特性。
*原子性(atomicity)
*一致性(consistency)
*隔离性(isolation)
*持久性(durability)
2.1. 原子性(atomicity)
一个事务必须被视为一个不可分割的最小单元。整个事务中的所有操作要么全部提交成功,要么全部失败回滚。对于一个事务来说,不能只执行其中的一部分操作。
示例说明