数据库事务隔离级别

发布于 2019-03-14 / SQL / 0条评论 / 125浏览

数据库事务隔离级别

传统的数据库的隔离级别从低到高大致可以分为四种:Read Uncommited(读未提交)、Read Commited(读提交)、Repeatable Read(可重复读)、Serializable(序列化)。

Read Uncommited

顾名思义,可以读取事务处理过程中,产生修改(update/insert),但是未提交(commit)的数据。这是最低级别的隔离级别。
产生问题:脏读,即读了马上有可能被修改/删除的脏数据。
解决办法:提升隔离级别到读提交。

Read Commited

只有提交了(commit)的数据,才能被读出来。
产生问题:不可重复读,访问相同数据的事务,需要等待前者提交后才能读取数据。
解决方法:提升隔离级别到可重复读。

Repeatable Read

可以重复读。(注意!!!可重复读是针对执行事务本身的这个事务而言,它自己可以重复读取自己事务中涉及到的数据,但是外部事务不能访问它)
产生问题:可能出现幻读,即执行重复读级别的事务,将它自己屏蔽了,外部事务/查询无法看到它的情况。而当它提交事务之后,外部事务再次执行查询,就会突然看到新的记录。

Serializable

将所有事务进行序列化,每一时间只能有一个事务操作涉及到的表和数据。最高级别的隔离。

评论
站长统计