MySQL事务4种隔离级别从低到高分别为

  • read uncommitted 读未提交
  • read committed 读提交
  • repeatable read 重复读
  • serializeable 序列化

read uncommitted 读未提交

一个事务可以读取另一个未提交事务的数据,容易造成所谓的脏读,read committed 可以解决脏读的问题

read committed 读提交 一个事务要等到另一个事务提交以后才能读取

如果有事务进行更新(update)操作、读数据事务,要等到更新数据事务提交以后才能读取数据 就这样解决脏读的问题,但是会有另外一个问题。两个相同的查询,返回的数据不一样,这就是不可重复读

repeatable read 重复读 能够解决 不可重复读

开启读事务的时候 不允许再有修改update操作,容易出现幻读的问题,就是这一秒命名是花了2万 此时又增加了insert记录,最后的记录成了4万,这就是幻读的问题。(对应的是insert操作,不是update)

serializeable 序列化 解决幻读的问题

事务的最高隔离级别,类似于redis单线程。它的事务是串行化,顺序执行,有效解决脏读、幻读、不可重复读,隔离高,但是效率低,耗资源大,一般不用

sqlserver、oracle等数据库,read committed 是它们两个的默认级别