事务
某个时间内一些连续且不可分割的操作集合
事务的基本要素
- 原子性:事务里的所有操作都是不可分割的,要么都成功,要么都失败;
- 一致性:事务开始前后,数据库的完整性约束没有破坏;
- 持久性:事务完成后,事务对数据库的所有更新都将被保存到数据库,不能回滚;
- 隔离性 :同一时间内,只允许一个事务请求同一数据,不同事务时间彼此没有干扰。
事务的隔离级别
- 读未提交:脏读,A修改没有提交,B读取到了,然后A进行回滚,那么B读到的数据就是脏数据;
- 读已提交:不可重复读,A修改提交,B在A提交前后进行读取,发现前后数据不一致,不能重复读;
- 可重复读:幻读,A插入数据提交,B在A提交前后进行读取,发现前后数据条目不一致,出现了幻觉;
- 串行化 :强行让事务有序执行
解决不可重复读:只需要锁住单独行即可
解决幻读:间隙锁/MVCC(https://blog.youkuaiyun.com/qq_36417014/article/details/108202007)