MySQL 数据库的隔离级别
Last updated
Was this helpful?
Last updated
Was this helpful?
数据库有4种隔离级别,它控制着并发和数据一致性之间的关系,并发性越高,则数据的一致性越差,下面以实例来说明
Read Uncommited
Y
Y
Y
Read Commited(default)
N
Y
Y
Repeatable
N
N
Y
Serializable
N
N
N
“脏读”的意思是在一个会话 Session1 中开启一个事务,在事务中插入一条数据,但是没有提交事物,此时在另一个会话 Session2 中开启一个事务,会查询到这条数据,这种现象称之为“脏读”,下图为实际操作演示:
“不可重复读”的意思是在一个会话 Session1 中开启一个事务,查询数据库未查到数据,此时在另一个会话 Session2 中开启一个事务,插入一条数据并提交,此时回到 Session1 查询数据库会查到这条数据,这种现象称之为“不可重复读”,下图为实际操作演示:
“幻读”的意思是在一个会话 Session1 中开启一个事务,查询数据库未查到数据,此时在另一个会话 Session2 中开启一个事务,插入一条数据并提交,此时回到 Session1 查询数据库依然查不到数据,现在在 Session1 插入一条同样的数据,会提示错误,这种现象称之为“幻读”,下图为实际操作演示:
“一致性读”的意思是在一个会话 Session1 中开启一个事务,此时在另一个会话 Session2 中开启一个事务会提示阻塞,不允许操作,知道Session1处理完当前的事务,这种隔离级别不允许并发,只是单纯的串行操作,这种现象称之为“一致性读”。
数据库的隔离级别越低,数据库的并发性能越高,但无法保证数据的一致性,相反的,隔离级别越高,数据的一致性越高,数据库的并发性能越差,最高的隔离级别不支持并发,只要开启一个事务,就会阻塞其他的事务,从而保证数据的一致性。