事务的隔离级别

数据库系统有四个隔离级别,分别为未提交读、已提交读、可反复读、串行化

大多数数据库的默认级别就是Read committed。比方Sql Server , Oracle。Mysql的默认隔离级别就是Repeatable read。


READ UNCOMMITTED(未提交读)

事务A运行的操作未提交。可是事务B还是能看到改动,这时会产生脏读的情况。

READ COMMITTED(提交读)

事务A先是读取了数据,这时事务B更改了同一数据。并已提交,这时事务A再次读取这个数据时就会发现两次数据不一致,这就产生不可反复读的现象。

REPEATABLE READ(可反复读)

当事务A读取记录时,会对此记录加入一个共享锁,即事务B不能在事务A结束前对记录进行改动。

可能产生的问题:当运行范围查询时,可能会产生幻读。

如事务A先查询一个消费总量,接着事务B添加一条消费记录,这时事务A再次查询消费总量时,就会发现两次查询不一致

SERIALIZABLE(序列化)

加入范围锁(比方表锁,页锁等、),直到transaction A结束。以此阻止其他transaction B对此范围内的insert,update等操作。幻读,脏读,不可反复读等问题都不会发生。


脏读

不可反复读

幻读

Read uncommitted

Read committed

×

Repeatable read

×

×

Serializable

×

×

×




posted @ 2017-04-20 13:43  claireyuancy  阅读(128)  评论(0编辑  收藏  举报