一、什么是事务控存储
事务是指作为一个逻辑工作单元执行的一些列操作,这些操作要么全部成功,要么全部失败。事务确保对多个数据的修改作为一个单元来处理。
在 MySQL 中,只有使用了 Innodb 存储引擎的数据库或表才支持事务;
事务用于维护数据库的完整性,保证成批的 sql 语句要么都执行,要么都不执行;
事务用于管理 INSERT、UPDATE、DELETE 语句。
二、事务的四个特性
如果某个数据库声称支持事务,那么该数据库必须具备 ACID 四个特性,即 Atomicity(原子性)、Consistency (一致性)、 Isolation (隔离性) 和 Durability (持久性)。
- 原子性:事务必须是原子工作单元,事务中包含的个操作要么都做,要么都不做。
- 一致性:事务在执行完成时,必须使所有的数据都保持一致状态。
- 隔离性:事务独立运行,多个事务之间相互隔离互不干扰。事务的100%隔离会牺牲速度。
- 持久性:事务执行完成后,它对系统的影响是永久性的。
三、MySQL 的事务控制
在默认情况下, MySQL 是自动提交事务的,即每一条 INSERT、UPDATE、DELETE SQL 语句提交后会立即执行 COMMIT 操作。因此要开启一个事务,可以使用 start transaction 或 begin ,或者将 autocommit 的值设为 0 。常见事务语法如下:
# 开启事务 begin # 提交事务 commit; # 回滚事务 rollback;