数据库的四种隔离级别

 更新时间:2019年01月07日 15:17:38   作者:李灿辉  
今天小编就为大家分享一篇关于数据库的四种隔离级别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

1,读未提交,Read Uncommited。

指的是一个事务读取到另外一个事务还没有提交的内容。这种情况是必须要避免的。因为其他事务未提交的数据,是随时有可能进行回滚的,所以,任何时候,都不应该允许程序读取到某个事务还未提交的数据。如果读取到了别的事务未提交的数据,这种情况称为脏读。要想解决脏读的问题,可以提高数据库的事务隔离级别,把事务隔离级别设置为读已提交。

2,读已提交,Read Committed。

这个隔离级别可以解决脏读的问题。

在该隔离级别下,不允许2个未提交的事务之间并行执行,但它允许在一个事务执行的过程中,另外一个事务得到执行并提交。这样,会出现一种情况,第一个事务前后两次select出来的某行数据,值可能不一样。值改变的原因是,穿插执行的事务2对该行数据进行了update操作。在同一个事务中,两次select出来的值不相同的问题称为不可重复读问题。要想解决不可重复读问题,需要把数据的隔离级别设置为可重复读。

3,可重复读。Repeatable Read。

在这个隔离级别下,可以解决不可重复读的问题。

在该隔离级别下,在一个事务使用某行的数据的过程中,不允许别的事务再对该行数据进行操作。可重复读应该是给数据库的行加上了锁。这种隔离级别下,依旧允许别的事务在该表中插入和删除数据,于是就会出现,在事务1执行的过程中,如果先后两次select出符合某个条件的行,如果在这两次select直接另一个事务得到了执行,insert或delete了某些行,就会出现先后两次select出来的符合同一个条件的结果不一样,第一次select好像出现了幻觉一样,因此,这个问题也被成为幻读。要想解决幻读问题,需要将数据库的隔离级别设置为串行化。

4,串行化,Serialization。

串行化可以解决幻读的问题。

它要求事务的执行完全串行执行。所以失去了并发的效率。

Mysql的默认隔离级别为可重复读。

总而言之,数据的事务隔离级别分为4种,从低到高依次为读未提交,读已提交,可重复读,串行化。与数据库事务隔离级别相关的问题有3个,分别是脏读,不可重复读,幻读。脏读问题需要用读已提交来解决,但读已提交会存在不可重复读问题。不可重复读问题需要用可重复读来解决,但可重复读会存在幻读问题。幻读问题需要用串行化来解决。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 关于sql注入的简要演示(入坑抛砖)

    关于sql注入的简要演示(入坑抛砖)

    这篇文章主要介绍了关于sql注入的简要演示(入坑抛砖),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • DBeaver复制数据库图文教程(数据库表结构以及内容)

    DBeaver复制数据库图文教程(数据库表结构以及内容)

    DBeaver提供一个图形界面用来查看数据库结构、执行SQL查询和脚本,下面这篇文章主要给大家介绍了关于DBeaver复制数据库(数据库表结构以及内容)的相关资料,需要的朋友可以参考下
    2024-01-01
  • SQL之Join的使用详解

    SQL之Join的使用详解

    关于sql语句中的连接(join)关键字,是较为常用而又不太容易理解的关键字,下面就为大家介绍一下相关资料,需要的朋友可以参考下
    2020-09-09
  • mysql与MongoDB性能对比,哪个更适合自己

    mysql与MongoDB性能对比,哪个更适合自己

    经常看到有人讨论,mongodb性能不如MySQL,MySQL能不能代替之类的说法 ,其实作为技术人,很不喜欢哪个比哪个好这种说法,基本就是挑事,我们今天一起
    2023-06-06
  • sql注入之必备的基础知识

    sql注入之必备的基础知识

    这篇文章所有的知识点都是在sql注入中最常用到也是最基础的知识点。对于一个需要精通sql语句的web安全工程师来说,下面的知识是必须要掌握的。下面的知识也是学习sql注入最基本的知识。下面大家来一起看看吧。
    2016-09-09
  • IntellJ Idea 2020版添加sqlite数据库的方法

    IntellJ Idea 2020版添加sqlite数据库的方法

    这篇文章主要介绍了IntellJ Idea 2020版添加sqlite数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • redis数据库查找key在内存中的位置的方法

    redis数据库查找key在内存中的位置的方法

    这篇文章主要介绍了redis数据库查找key在内存中的位置的方法,需要的朋友可以参考下
    2014-03-03
  • 一个查询的SQL语句请教,希望能够用一条SQL语句得到结果

    一个查询的SQL语句请教,希望能够用一条SQL语句得到结果

    一个查询的SQL语句请教,希望能够用一条SQL语句得到结果...
    2007-06-06
  • leaf方案实现美团点评分布式ID生成系统

    leaf方案实现美团点评分布式ID生成系统

    在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求
    2022-01-01
  • StarRocks索引详解(最新整理)

    StarRocks索引详解(最新整理)

    StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空间、高效集合运算和快速排除不存在的数据块,本文介绍StarRocks索引的相关知识,感兴趣的朋友一起看看吧
    2025-03-03

最新评论