数据库—MySQL事务
1. 事务简介
1.1 什么是事务?
事务(Transaction) 是数据库操作的最小逻辑单元,用于将一系列数据库操作(如插入、更新、删除)组合成一个不可分割的原子性操作。事务的目的是确保数据的一致性和完整性,即使在系统故障或并发操作时也能保持数据的正确性。
2. 事务的四大特性(ACID)
特性 | 描述 |
---|---|
原子性 (Atomicity) | 事务中的所有操作要么全部成功,要么全部失败回滚(通过 UNDO 日志实现)。 |
一致性 (Consistency) | 事务执行前后,数据库必须从一个一致状态转换到另一个一致状态(如约束、触发器)。 |
隔离性 (Isolation) | 并发事务之间互不干扰(通过锁机制或多版本控制实现)。 |
持久性 (Durability) | 事务提交后,对数据库的修改是永久性的(通过 REDO 日志实现)。 |
3. 事务控制语句
-- 1. 开启事务
BEGIN; -- 或 START TRANSACTION;-- 2. 提交事务(永久保存修改)
COMMIT;-- 3. 回滚事务(撤销未提交的修改)
ROLLBACK;-- 4. 设置保存点(部分回退)
SAVEPOINT savepoint_name;
ROLLBACK TO savepoint_name;
4. 事务的隔离级别
MySQL 支持四种隔离级别(默认为 REPEATABLE READ):
-
脏读:读到其他事务未提交的数据。
-
不可重复读:同一事务内两次读取同一数据结果不同。
-
幻读:同一事务内两次查询返回的行数不同。