美文网首页
SQL标准是如何规定事务级别的?

SQL标准是如何规定事务级别的?

作者: Colors_boy | 来源:发表于2021-04-19 18:16 被阅读0次

前言

通过上一篇张,我们了解到并发事务,带来的脏读、脏写、不可重复读和幻读几种问题。针对这系列问题,实际上SQL标准上已经规定了事务的几种隔离级别,以解决上述问题。

这次就来看看分别是sql标准上的是哪几种隔离级别,需要特别注意到是,sql标准的隔离级别与MySQL具体实现的隔离级别是有差距的。

1. read uncommitted

第一种隔离级别是未提交读。

未提交读不会出现脏写,在这种隔离级别下,是不允许多个事务在未提交的情况下同时更新同一行数据的。但是有可能导致脏读、不可重复读和幻读。

原因是在事务未提交时多次去查询同一行数据,有可能发生读到的数据不一样,毕竟其他事务未提交的情况下是有可能发生回滚的,更别说不可重复读和幻读了。

2. read committed

第二种隔离级别是已提交读,简称RC。

已提交读不会出现脏写和脏读。在这种隔离级别下,未提交的事务修改的数据,是不允许被访问的,即是说,未提交的事务修改的数据,是绝对读不到的。但仍有可能出现不可重复读和幻读。

原因是事务一旦修改了数据并提交了,其他事务还是会读到。可能导致每次读到的数据不一致,而出现不可重复读和幻读等问题。

3. repeatable read

第三种隔离级别是可重复读,简称RR

可重复读隔离级别下,还是会出现幻读。在这种隔离级别下,一个事务查询到了一个值,后面的事务再去修改这个值并不会影响到第一个事务查询到的值,即是说,第一个事务查询到的值为A,第二个事务去把A改成了B并提交了,第一个事务再次去查询的时候,依然会返回A值。

但是,有可能遇到其他事务插入数据的情况,这时,假设执行“select * from table where id >10”,第一个事务查询到了10条数据,第二个事务插入了一条id>10的数据并提交了,这时第一个事务再去查询就会查询到11条数据,这种情况下就导致了幻读的问题。

4. serializeble

第四种隔离级别是序列化。

serializeble隔离级别不允许多个事务并发执行,只能串行起来执行。即是说,首先执行事务A提交后,然后执行事务B提交后,再执行事务C提交。效率非常非常的低。

相关文章

  • SQL标准是如何规定事务级别的?

    前言 通过上一篇张,我们了解到并发事务,带来的脏读、脏写、不可重复读和幻读几种问题。针对这系列问题,实际上SQL标...

  • 理解数据库事务隔离级别

    一、SQL标准事务隔离级别解释 在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,较...

  • SQL——事务

    事务(transaction)由查询和更新语句序列组成(何为序列,有序的列)。 SQL规定当一条SQL语句被执,就...

  • 你的标准决定了你的人生

    什么是标准?· 标准是一种统一规定。既然是规定,越是权威机构的规定其价值越高; · 标准是...

  • hibernate和mybatis缓存

    相同: 1.都分为两级缓存,一级缓存和二级缓存,一级缓存都是session事务级别的,在一个事务中有效,事务执行完...

  • MySQL 理解事务隔离级别

    在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可...

  • 14)mysql事务

    什么是事务事务是数据库执行操作的最小单元事务可以有一个sql组成,也可以由多个sql组成组成事务的sql要么全执行...

  • 使用线程池+事务插入百万条数据到数据库中

    Sql脚本如下: Java代码如下: 运行结果: 思考:如何通过控制线程个数、外层循环事务个数以及内层事务每次提交...

  • 第七章 事务(下)

    7.6 事务的隔离级别ISO和ANIS SQL标准制定了四种事务隔离级别的标准,但是很少有数据库厂商遵循这些标准。...

  • SQL Server数据库高级进阶之事务实战演练

    一、SQL Server事务的本质 •什么是SQL Server数据库事务?事务:是作为单个工作单元而执行的--系...

网友评论

      本文标题:SQL标准是如何规定事务级别的?

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