美文网首页
事务的隔离级别

事务的隔离级别

作者: lsh的学习笔记 | 来源:发表于2020-05-09 16:57 被阅读0次

    标准

    SQL标准定义的四个隔离级别为:

    • READ UNCOMMITTED
    • READ COMMITTED
    • REPEATABLE READ
    • SERIALIZABLE
    1. READ UNCOMMITTED称为浏览访问(browse access),仅仅针对事务而言的。
    2. READ COMMITTED称为游标稳定(cursorstability)。
    3. REPEATABLE READ是2.9999°的隔离,没有幻读的保护。
    4. SERIALIZABLE称为隔离,或3°的隔离。

    默认

    Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ的事务隔离级别。

    SQL和SQL2标准的默认事务隔离级别是SERIALIZABLE。

    InnoDB存储引擎默认支持的隔离级别是REPEATABLE READ,但是与标准SQL不同的是,InnoDB存储引擎在REPEATABLE READ事务隔离级别下,使用Next-Key Lock锁的算法,因此避免幻读的产生。已经能完全保证事务的隔离性要求,即达到SQL标准的SERIALIZABLE隔离级别。

    隔离级别越低,事务请求的锁越少或保持锁的时间就越短。这也是为什么大多数数据库系统默认的事务隔离级别是READ COMMITTED。

    据了解,大部分的用户质疑 SERIALIZABLE 隔离级别带来的性能问题,但是根据JimGray在《Transaction Processing》一书中指出,两者的开销几乎是一样的甚至 SERIALIZABLE 可能更优!!!

    因此在 InnoDB 存储引擎中选择 REPEATABLE READ 的事务隔离级别并不会有任何性能的损失。同样地,即使使用 READ COMMITTED 的隔离级别,用户也不会得到性能的大幅度提升。

    相关文章

      网友评论

          本文标题:事务的隔离级别

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