SSM-Spring-数据库事务管理-数据库的相关知识
数据库事务ACID的特性
数据库事务正确执行的 个基础要素是:
- 原子性:整个事务的所有操作,要么全部完成,要么都不完成,不可能停留在中间某个环节,事务执行发送错误,会被回滚到开始前的状态
- 一致性:一个事务可以改变封装状态,事务必须始终保持系统处于一致状态
- 隔离性:两个事务之间的隔离程度(难理解)
- 持久性:事务完成后,该事务对数据库所做的更改便持久保存在数据库之中,不会被回滚
丢失更新
当数据库在一个事务的环境中运行,多个事务的并发会产生一系列问题,主要问题之一是丢失数据
隔离级别
在不同程度上减少丢失更新,按照SQL的标准规范,把隔离级别分为4层:
- 脏读(dirty read):最低隔离级别,允许一个事务读取另一个事务中未提交的数据
- 读写提交(read commit):一个事务只能读取另一个已提交的数据。
- 可重复读(repeatable read):使得同一条数据库记录读写按照序列化进行操作,不会产生交叉情况,保证数据的一致性
- 序列化(Serizlizable):让SQL按照顺序读写的方式
各类隔离级别和产生现象:
隔离级别 | 脏读 | 不可重读 | 幻读 |
---|---|---|---|
脏读 | 1 | 1 | 1 |
读写提交 | 0 | 1 | 1 |
可重复读 | 0 | 0 | 1 |
序列化 | 0 | 0 | 0 |