美文网首页
Spring事务隔离级别与Mysql InnoDB事务隔离级别的

Spring事务隔离级别与Mysql InnoDB事务隔离级别的

作者: 司青玄 | 来源:发表于2018-07-11 15:44 被阅读0次

    这里不再重复READ_UNCOMMITTED, READ_COMMITTED, REAPEATED_READ, SERIALIZABLE这几种标准事务隔离级别的关系,网上资料一大把。很多朋友可能会有疑惑,如果Spring事务可以设置隔离级别,而数据库也可以设置默认隔离级别,那他们到底是怎样的关系呢?

    直接说结论:

    • Spring会在事务开始时,根据你程序中设置的隔离级别,调整数据库隔离级别与你的设置一致。
    • 当使用Serializable级别时,Mysql在执行SQL时会自动修改为select .... lock in share mode, 即使用共享锁。此时允许同时读,但只允许一个事务写,且锁的是行而不是整张表

    这意味着:

    • 如果数据库不支持某种隔离级别,那么Spring设置了也无效。
    • 当使用Serializable级别时,如果两个事务读写的不是同一行,那么它们是互不影响的。如果操作同一行记录,那么允许同时读,但如果出现一个对此行的写操作,则在写事务没有提交之前,所有的读事务都会被block。

    相关文章

      网友评论

          本文标题:Spring事务隔离级别与Mysql InnoDB事务隔离级别的

          本文链接:https://www.haomeiwen.com/subject/okmhpftx.html