8.事务的详细
2018-04-20 本文已影响6人
光小月
1. 事务的四个特性:
- 原子性 A -Atomicity
- 一致性 C - Consistency
- 隔离性 I - Isolation
- 持久性 D- Durability
2. 事务不隔离带来的问题:
- 更新丢失
- 脏读
- 不可重复读
- 虚读(幻读)。
其中更新丢失就是并发写,这是一定不允许的,因此一定要解决更新丢失问题。
3. 事务隔离的级别:
- 读未提交 -read uncommitted -RU
- 读已提交 -Read committed -RC
- 可重复读 -Repeatable Read -RR
- 串行化 -Serializable -S
更新丢失 | 脏读 | 不可重复读 | 虚读 | |
---|---|---|---|---|
RU(读未提交) | 避免 | |||
RC(读提交) | 避免 | 避免 | ||
RR(可重复读) | 避免 | 避免 | 避免 | |
S(串行化) | 避免 | 避免 | 避免 | 避免 |
(读已提交)
4. 常见数据库的事务隔离
数据库 | 默认级别 |
---|---|
MySQL | 可重复读(Repeatable Read) |
Oracle | 读提交(Read Committed) |
SQLServer | 读提交(Read Committed) |
DB2 | 读提交(Read Committed) |
PostgreSQL | 读提交(Read Committed) |
在MySQL数据库中,支持上面四种隔离级别,默认的为Repeatable read (可重复读);此外,(通过Next-key lock加锁方法即范围锁解决不可重复读和幻读问题,如select * from t where a>10会对key为[10,infinite)范围的行加锁,这样其他事务就不能对此范围内key对应的行更改)达到了SQL、SQL2标准中的Serializable级别。
在MySQL中查看与设置隔离级别, 使用JDBC对数据库的事务设置隔离级别
详见: https://www.cnblogs.com/z-sm/p/7245981.html
欢迎关注,以后会不定时更新!