数据隔离级别
隔离级别是ANSI(美国国家标准学会:AMERICAN NATIONAL STANDARDS INSTITUTE)在多个事务并发的时候能够正确的处理数据所定义的规范。事务隔离级别越高,数据的正确性和数据库的完整性也就越高,但是数据并发处理的效率就会有所降低。
SI和SSI的诞生
ANSI SQL-92标准中,规定了4种数据库隔离级别,也就是我们今天熟知的读未提交、读已提交、可重复度和串行化。
Leve | P1 | P2 | P3 |
---|---|---|---|
READ UNCOMMITTED | Possible | Possible | Possible |
READ COMMITTED | Not Possible | Possible | Possible |
REPEATABLE READ | Not Possible | Not Possible | Possible |
SERIALIZABLE | Not Possible | Not Possible | Not Possible |
p1:脏读 p2:不可重复读 p3:幻读
1995年,Jim Gray 等人在论文 “A Critique of ANSI SQL Isolation Levels”中提出了 ANSI SQL-92 存在的两个问题
- 自然语言方式界定的异常现象并不严格,导致一些同质化的异常现象被遗漏
- 一些典型的异常现象并没有被涵盖进去,导致隔离级别存在明显缺失