事务是数据库中一组不可分割的 SQL 操作,要么全部执行成功,要么全部失败回滚,事务的核心是四大特性,简称 ACID:
1、原子性(Atomicity):事务中的所有操作,是一个整体,要么全成功,要么全回滚,不存在部分执行的情况(核心:不可分割)。
例:转账时,A 扣款、B 加款,要么都成功,要么都失败。
2、一致性(Consistency):事务执行前后,数据库的数据完整性、业务规则保持不变(核心:数据正确)。例:转账前后,A+B 的总金额不变;订单创建后,库存数减少对应数量。
3、隔离性(Isolation):多个事务并发执行时,事务之间相互隔离,互不影响,每个事务感觉不到其他事务的存在(核心:互不干扰)。隔离性由「事务隔离级别」和「锁机制」保证,解决并发事务的脏读、不可重复读、幻读问题。
4、持久性(Durability):事务提交后,修改的数据会永久写入磁盘,即使数据库崩溃重启,数据也不会丢失(核心:永久生效)。持久性由 MySQL 的redo 日志保证。