嵌套事务(而不是并发事务)的默认隔离级别是多少?

     2023-03-28     200

关键词:

【中文标题】嵌套事务(而不是并发事务)的默认隔离级别是多少?【英文标题】:What is the default isolation level across nested transactions (instead of concurrent ones)? 【发布时间】:2019-04-24 14:14:01 【问题描述】:

Spring 有 3 种典型的嵌套事务传播:REQUIREDNEWNESTED。隔离级别类型总是根据并发事务来描述。但是嵌套案例呢?从内部到外部以及相反的默认可见性是什么?设置隔离级别对两者有何影响?

是否有任何经验法则,例如“外部事务总是看到内部不考虑隔离或传播类型的变化”或“内部只有在其设置为 read_uncommited 时才能看到外部的变化。还是根据需要设置等等..?

编辑:我说的不是实际的 sql 查询,而是持久性上下文。我的意思是,如果我创建一个资源并在嵌套事务模型的另一部分中读取它,无论它是否实际被持久化,我都会看到更改吗?一个很好的例子是一个事务工作流,它执行使用repository.save、repository.find ...等的事务方法

【问题讨论】:

但这些都不是隔离级别。而是在某个特定点有/没有交易时该怎么做。我还要说,由于嵌套事务在“父”事务的范围内,因此它们共享共同的范围。从未测试过。 我总是想到一个事务方法调用另一个事务方法。所以总是有事务的上下文。我希望即使默认情况下两个事务都已 read_commited,也会有更改可见性的特殊规则,但我在文档中找不到它 read committed 几乎在所有数据库中都是默认的,但例外情况较少,nested 传播类型不是很大,顺便说一句 【参考方案1】:

内部和外部事务之间没有隔离。它存在的唯一原因是保存点。那个东西只是让你回滚内部事务而不回滚外部事务。 Documentation 说:

PROPAGATION_NESTED 使用单个物理事务和多个 它可以回滚到的保存点。 这样的部分回滚让 内部事务范围触发其范围的回滚,其中 外部交易能够继续物理交易 尽管已经回滚了一些操作。这个设置是 通常映射到 JDBC 保存点,因此它仅适用于 JDBC 资源交易。请参阅 Spring 的 DataSourceTransactionManager

统一更新: 你也可以find:

事务隔离级别。仅适用于传播设置 REQUIREDREQUIRES_NEW

【讨论】:

我很欣赏这个答案,但我不确定是否完全专注于我所问的问题,即 Isolation.types 之外的隔离。也许编辑使它更清晰

事务的隔离级别和传播行为

一、什么是事务隔离  一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 五个事务隔级别:lsolation的属性值1,default默认的事... 查看详情

弱隔离级别&事务并发问题

介绍弱隔离级别为什么要有弱隔离级别如果两个事务操作的是不同的数据,即不存在数据依赖关系,则它们可以安全地并行执行。但是当出现某个事务修改数据而另一个事务同时要读取该数据,或者两个事务同时修改相同数据时... 查看详情

mysql事务隔离级别的实现原理

文章目录一、什么是事务的隔离级别二、再看可重复读原理锁定读(当前读)一致性非锁定读(快照读)隐式锁定(两阶段锁)显式锁定三、总结一、什么是事务的隔离级别在数据库系统中,一个事务是指:由一系列数据库操作... 查看详情

更改mysql的默认事务隔离级别

MySQL的事务隔离级别一共有四个:大多数的数据库系统的默认事务隔离级别都是:Readcommitted而mysql的默认事务隔离级别是:RepeatableRead我们可以采用下面这种方法查询Mysql中的当前事务隔离级别:然后使用命令:... 查看详情

锁模块

...问题1、MyISAM和InnoDB关于锁方面的区别是什么?2、数据库事务的四大特性?3、事务隔离级别以及各级别下的并发访问问题?4、InnoDB可重复读隔离级别下如何避免幻读?5、RC、RR级别下的InnoDB的非阻塞读如何实现? 1、MyISAM和In... 查看详情

什么是 ERP 的最佳默认事务隔离级别(如果有)?

】什么是ERP的最佳默认事务隔离级别(如果有)?【英文标题】:WhatisthebestdefaulttransactionisolationlevelforanERP,ifany?【发布时间】:2010-09-2617:29:19【问题描述】:简短背景:我们刚刚开始使用Hibernate将ERP系统迁移/重新实现到Java,目... 查看详情

事务并发之隔离级别

事务事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性(ACID)属性,只有这样才能成为一个事务。事务并发数据库是多个用户(事务)共享的,当多个用户同... 查看详情

spring有几种事务隔离级别?

Spring中的事务隔离级别和数据库中的事务隔离级别稍有不同,以MySQL为例,MySQL的InnoDB引擎中的事务隔离级别有4种,而Spring中却包含了5种事务隔离级别。1.什么是事务隔离级别?事务隔离级别是对事务4大特性中隔... 查看详情

图解数据库事务的隔离级别(代码片段)

...?我在网上所能找到的答案,帮助个人的理解。答案一:事务隔离级别是并发控制的整体解决方案,其实际上是综合利用各种类型的锁和行版本控制,来解决并发问题。锁是数据库并发控制的内部机制,是基础。对用户来说,只... 查看详情

mysql事务的隔离级别和acid

...;会产生脏读,不可重复读,幻读)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(DirtyRead)。read-c... 查看详情

事务的隔离级别是啥?

数据库事务的隔离级别有4种,由低到高分别为Readuncommitted、Readcommitted、Repeatableread、Serializable。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。1、Readuncommitted读未提交,顾名思义,就是一个事务可以读取另一... 查看详情

更改mysql的默认事务隔离级别

MySQL的事务隔离级别一共有四个:大多数的数据库系统的默认事务隔离级别都是:Readcommitted而mysql的默认事务隔离级别是:RepeatableRead我们可以采用下面这种方法查询Mysql中的当前事务隔离级别:然后使用命令:... 查看详情

事务和锁机制是啥关系?开启事务就自动加锁了吗?菜鸟,谢谢了。

1、事务与锁是不同的。事务具有ACID(原子性、一致性、隔离性和持久性),锁是用于解决隔离性的一种机制。2、事务的隔离级别通过锁的机制来实现。另外锁有不同的粒度,同时事务也是有不同的隔离级别的。3、开启事务就... 查看详情

mysql的默认事务隔离级别是?

mysql的4种事务隔离级别,如下所示:1、未提交读(ReadUncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。2、提交读(ReadCommitted):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别(不重复读)... 查看详情

事务隔离级别(代码片段)

背景对于软件开发人员来说,有时候我们需要面对瞬时海量的并发请求,例如阿里双十一等活动,当处理并发流程时需要我们通过各种机制保持数据一致性,其中,最有效的一种机制就是锁机制。而对于数据库管理人员来说,并... 查看详情

事务隔离级别(代码片段)

背景对于软件开发人员来说,有时候我们需要面对瞬时海量的并发请求,例如阿里双十一等活动,当处理并发流程时需要我们通过各种机制保持数据一致性,其中,最有效的一种机制就是锁机制。而对于数据库管理人员来说,并... 查看详情

第31讲:mysql事务的并发问题以及事务的隔离级别

文章目录1.事务的并发问题1.1.事务并发之脏读1.2.事务并发之不可重复读1.3.事务并发之幻读2.事务的隔离级别3.模拟事务并发问题的产生以及如何避免3.1.事务并发问题脏读的模拟以及避免3.1.1.模拟事务并发脏读的问题3.1.2.解决事... 查看详情

并发事务的问题和隔离级别

目录事务的ACID特性并发事务的问题隔离级别悲观锁和乐观锁参考事务的ACID特性原子性(Atomicity):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性(Consistency):执行事... 查看详情