首页 课程 师资 教程 报名

告诉你什么是事务的隔离性

  • 2022-09-13 08:48:23
  • 348次 星辉

是事务的隔离性是什么?星辉小编来告诉大家。

1.修改隔离级别

Set session transaction isolation level read uncommitted;

2.查看隔离级别

Select @@tx_isolation

3.事务的4种隔离级别

(1)读未提交read uncommitted

一个事务可以读到其他事务还没有提交的数据,会出现脏读。一个事务读到了另一个未提交事务修改过的数据,就是脏读。

(2)读已提交read committed

一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务对该数据进行一次修改并提交后,该事务能查询到最新的值,会出现不可重复读、幻读。

如果一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询,能把另一个事务插入的记录也读出来,这就是幻读。

(3)可重复读repeatable Read

一个事务第一次读过某条记录后,即使其他事务修改了该记录的值并且提交,该事务之后再读该条记录时,读到的仍属第一次读到的值,而不是每次都读到不同的数据,这就是可重复读,这种隔离级别解决了不可重复,但还是会出现幻读。MySQL默认的隔离级别,其内部解决了幻读问题。

(4)串行化serializable

读未提交、读已提交、可重复读这几种隔离级别都允许对同一条记录进行读读、读写、写读的并发操作。如果不允许读写、写读的并发操作时,可以使用serializable隔离级别,这种隔离级别因为对同一条记录的操作都是串行的,所以不会出现脏读、幻读等现象。

注意:

Read uncommitted隔离级别:可能发生脏读、不可重复读、幻读问题。

Read committed隔离级别:可能发生不可重复读和幻读,但不会发生脏读问题。

Repeatable read隔离级别:可能发生幻读问题,不会发生脏读和不可重复读问题。

Serializable隔离级别:各种问题都不会发生。

四种隔离级别是SQL的标准定义,不同的数据库有不同的实现,特别需要注意MySQL在repeatable read隔离级别下,是可以禁止幻读问题的发生的。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交