概念

事务:一组原子性的 SQL 查询,或者说是一个独立的工作单元。

特点:事务内的语句,要么全部执行成功,要么全部执行失败。

开始事务

  1. start transaction; -- 开启事务
  2. select blance from checking where customer_id = 1;
  3. update checking set blance = blance - 200 where customer_id = 1;
  4. update savings set blance = blance + 200 where customer_id = 1;
  5. commit; -- 提交事务(提交所有修改)
  6. rollback; -- 回滚事务(撤销所有修改)

ACID 特性

事务的 ACID 特性能保证数据的安全性,但也会增加系统额外的工作(相比实现 ACID 的数据,需要更多的CPU、内存、磁盘空间)

原子性(atomicity)


一个事务必须被视为一个不可分割的最小工作单元, 整个事务的所有操作要么全部提交成功,要么全部失败回滚。对于事务而言,不可能只执行其中的一部分操作。

一致性(consistency)


数据库总是从一个一致性的状态转换到另外一个一致性的状态。若事务没有提交成功,事务中所做的修改也不会保存到数据库中。

隔离性(isolation)


通常来说,一个事务所做的修改,在未提交之前,对其他事务是不可见的。

“通常来说”:后续涉及有隔离级别(Isolation level),会具体详述。

持久性(durability)

一旦事务提交,所做的修改就会永久保存到数据库中。即使系统崩溃、修改的数据也不会丢失。