文章图片来自参考文章,图片非原创
概述
事务隔离级别可解决的问题
下面的章节将会解释脏读,不可重复度和幻读。MySQL 默认的事务隔离级别是可重复读(repeatable – read ) 。
隔离级别
读未提交(read – uncommited)
我们从名称上级就可以了解这个过程,读未提交,未commited 的数据有可能会回滚,那么读到的数据就是脏数据,这就是脏读了。下面用以下实例来说明。
先创建两个客户端,创建A
创建B , 并开启事务,但是未提交
那此时我们看一下A读到的数据,由 450 变成了400
所以这就有问题了,此时B 要是回滚呢
那么A 此时操作呢
读提交
读提交解决了脏读,但是存在不可重复读的问题 。上面由于读取没有提交的数据导致读到了脏数据,那么我就等你提交后再读取咯。
我们再看一下 B 没提交,是否可以读到修改的数据。
上面可以看到A 在没提交前读取是没有问题的,那么提交后呢?
两次读取是不一样的,那么就是说不可重复读。
可重复读(repeatable – read )
可重复读主要的特点是 : 解决了不可重复读,但是存在幻读。下面的例子展示数据是可重复读的
可以看到两次读取是一致的。