mysql的隔离级别

12 阅读1分钟

1.读未提交:

1.1:打开一个客户端A.设置当前事务级别为read uncommittied(读未提交).

1.2:在客户端A提交事务以前,打开另一个客户端进行修改.

1.3:如果客户端因为某些原因进行回滚,就会导致读取到脏数据.

如果想避免这种问题,可以继续上升一个隔离级别,读已提交.

2.读已提交:

2.1:打开一个客户端A,将当前模式设置为read committed(读已提交),查询所有记录.

2.2:打开另一个客户端B,进行修改.然后用客户端A进行查询数据.

这样就解决了脏读带来的问题.但是又出现了不可重复读的问题.

3.可重复读.

3.1打开一个客户端A,设置当前事务为可重复读.repeatable read.查询所有记录.

3.2打开另一个客户端B,修改数据,然后进行查询数据.

这种隔离级别解决了上面不可重复读的问题,但是带来了新的问题--幻读.

4.幻读演示:

打开客户端B重新开启事务,然后插入一条数据.客户端A进行查询,不会看到.做到了可重复读,当执行完修改语句,在进行查询,那条语句就像幻觉一样出现了.串行化就是为了解决幻读.

因为串行化效率比较低,用的比较少.就不进行演示了.感兴趣的小伙伴可以根据上面的例子,进行自己尝试串行化.

语雀地址www.yuque.com/itbosunmian…?

《Go.》 密码:xbkk 欢迎大家访问.提意见.