在标准SQL规范中,定义了四个事务隔离级别。
1.读未提交
read uncommitted.
可以读到数据在别的事务处理期间的所有可能值。
2.读已提交
read committed.
别的事务已提交的值都可以被读到。
3.可重复读
repeatable read.
只能读到该事务开始前的值。忽略其他事务的修改。
4.串行化
serializable.
是最严格的事务隔离级别,它要求所有的事务都被串行执行。
5.例子
为了方便说明问题,定义事务A:不断的读小明的语文成绩。事务B:将小明的语文成绩从原本的100分开始,不断加1,最终达到130分后提交事务。
t1时刻,事务A开始;t2时刻,事务B开始;t3时刻,事务B结束;t4时刻,事务A结束。
在整个过程中,事务A在各个隔离级别可能读到的情况见下表。
隔离级别 | 事务A可能读到的数据 |
---|---|
读未提交 | [100,130]中的任意值 |
读已提交 | 只可能读到100与130 |
可重复读 | 只能读到100 |
串行化 | 不可访问 |
时间: 2024-10-23 21:59:34