1. 前言
MySQL 中事务(Transaction)的定义是对于一个或者多个 SQL 语句,要么全部执行成功,要么一个都不执行成功。在实际应用场景中,有很多需要事务的场景,例如在电商网站,顾客下单、付款以及商品扣减库存就应该在一个事务中执行,如果不能保证事务特性,就可能出现用户已经下单并且成功付款,但是在扣减库存逻辑出现异常,发货失败的情况。所以事务中的某个环节出现异常,之前执行的所有 SQL 语句都应该回滚。
2. 事务
2.1 事务 ACID 特性
面试官提问: MySQL 中事务的特性是什么?
题目解析:
ACID 是衡量事务的 4 个维度,分别的定义是:
(1)原子性(Atomic,简写 A):原子性要求事务是一个不可分割的执行单位,如果一个事务包含多条 SQL 语句,要么所有的 SQL 都执行成功,要么所有的 SQL 都执行失败,不存在两者之间的中间状态。如果事务中的任意一条 SQL