事务
事务是在数据库系统中保证一组操作要么全部成功,要么全部失败的机制,,确保数据在并发访问和潜在故障下的正确性和可靠性
事务四大特性
- 原子性:atomicity : 事务操作是一个整体,要么全部成功,要么全部失败,不存在中间状态
- 一致性 : consistency : 事务执行前后,数据库必须从一个合法性状态转变成另一个合法性状态,强调结果永远合法,符合规则
- 隔离性: 多个并发事务之间互不干扰
- 持久性: 一旦事务提交,结果永久保存
事务引发的问题
- 脏读 : 事务A读到了事务B未提交的修改数据,如果事务B回滚,那么A读到的数据就是脏数据
- 不可重复读 : 在同一个事务A内,两次读取同一行数据,结果不一致(因为在此期间事务B修改并提交了数据)
- 幻读 : 在同一个事务中,两次执行相同范围的查询,返回的记录数不一样(因为在此期间,事务B插入或者删除符合这个查询条件的数据并提交了)
事务的隔离级别
- 读未提交 : 一个事务能读取到其他事务尚未提交的数据,,会脏读,不可重复读,幻读
- 读已提交: 一个事务只能读取到其他事务已经提交的数据,, 会不可重复读,幻读
- 可重复读: 一个事务执行期间,他看到的数据在事务开始时就被确定,不会受其他事务的影响,,,会幻读
- 串行化 : 让并发事务的执行结果,串行的一个接一个的执行 ,, 避免脏读,不可重复读,幻读
mysql的隔离级别是可重复读