数据库
事务
概念
一组操作,要么都执行,要么都不执行
原理
- 事务提交后,发生变更的数据先更新到Buffer Pool缓冲区里,然后再合适的时机再持久化到磁盘
- 为了防止持久化过程中数据库宕机,导致数据丢失,所以Innodb引入redo log重写日志,会把数据的变更记录到redo log里,MySQL重启后会从redo log里读取指令重新执行一遍,从而保证持久性
用处
保障开发中多个操作对数据修改的一致性
示例
- 使用Spring框架开发,使用@Transactional注解
- Mysql默认开启事务,手动提交事务
-- 开始事务
START TRANSACTION;
-- 向表格中插入两条记录
INSERT INTO my_table (name) VALUES ('John');
INSERT INTO my_table (name) VALUES ('Jane');
-- 提交事务
COMMIT;