数据库隔离级别

在Spring中定义了5中不同的事务隔离级别。

1. ISOLATION_DEFAULT(一般情况下使用这种配置既可)

这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。

2. ISOLATION_READ_UNCOMMITTED

这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。

(大部分数据库缺省的事物隔离级别都不会出现这种状况)

3. ISOLATION_READ_COMMITTED

保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

什么是脏读?

例如:

张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。

与此同时,

事务B正在读取张三的工资,读取到张三的工资为8000。

随后,

事务A发生异常,而回滚了事务。张三的工资又回滚为5000。

最后,

事务B读取到的张三工资为8000的数据即为脏数据,事务B做了一次脏读。

(大部分数据库缺省的事物隔离级别都不会出现这种状况)

4. ISOLATION_REPEATABLE_READ

这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。

什么是不可重复读?

例如:

在事务A中,读取到张三的工资为5000,操作没有完成,事务还没提交。

与此同时,

事务B把张三的工资改为8000,并提交了事务。

随后,

在事务A中,再次读取张三的工资,此时工资变为8000。在一个事务中前后两次读取的结果并不致,导致了不可重复读。

(大部分数据库缺省的事物隔离级别都不会出现这种状况)

5. ISOLATION_SERIALIZABLE

这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻读。

什么是幻读?

例如:

目前工资为5000的员工有10人,事务A读取所有工资为5000的人数为10人。

此时,

事务B插入一条工资也为5000的记录。

这是,事务A再次读取工资为5000的员工,记录为11人。此时产生了幻读。

(大部分数据库缺省的事物隔离级别都会出现这种状况,此种事物隔离级别将带来表级锁)


说明 :Oracle数据库缺省的事物隔离级别已经保证了避免脏读和不可重复读。但可能会幻读,避免幻读需要加表级锁,Oracle缺省行级锁。在基于Spring的事物配置中一定要慎重使用ISOLATION_SERIALIZABLE的事物隔离级别。这种配置会使用表级锁,对性能影响巨大。一般没有特殊需要的话,配置为使用数据库缺省的事物隔离级别便可。

原文:http://www.iteye.com/topic/1113046
深入理解OLE DB事务管理与隔离级别 本文详细探讨了OLE DB在事务管理中的高级概念,包括对象属性的设置和检索,以及如何利用不同的事务接口进行事务控制。文章涵盖了从创建、提交到中止事务的完整流程,并对事务的隔离级别和锁定机制进行了深入分析,旨在为读者提供全面的事务操作指导。 阅读详情

相关推荐

无人机精准降落辅助系统核心技术解析

接近地面时(<10米)切换至基于图像的视觉伺服(IBVS),依据图像特征点偏移(如靶标图案、LED标记)微调姿态,消除位置累积误差。通过SRUKF(平方根无迹卡尔曼滤波) 算法融合三类数据,输出6自由度位姿估计(精度达厘米级),抑制单一传感器噪声。权值根据信噪比动态调整。模型预测控制(MPC):针对斜坡降落,构建包含平台倾角、风扰的动力学方程,滚动求解最优油门序列。动态照明适配:针对夜间或低光照场景,系统向降落平台发送亮度调节指令,如增强红外信标强度或调整可见光LED阵列,确保特征识别鲁棒性。

YUNZHUO666的博客 1695

Spring 事务有几个隔离级别?如何使用它们?

在数据库系统中,事务隔离级别定义了一个事务在多大程度上能够看到其他事务对数据库所做的修改。DEFAULT:使用数据库的默认隔离级别。(读未提交)(读已提交)(可重复读)(可串行化)不同的隔离级别在数据一致性和并发性能之间存在权衡。以下将详细介绍每个隔离级别的原理、优缺点以及在 Spring 中的使用方式。事务隔离级别是数据库并发控制的重要机制,它在数据一致性和并发性能之间提供了灵活的平衡。Spring 提供了便捷的事务管理和隔离级别配置,使开发者能够根据业务需求轻松调整事务行为。

Java架构师之路的博客 2047

Xilinx Vitis 2020.1中Microblaze SREC SPI Bootloader初始化失败的调试与修复指南

本文详细解析了在Xilinx Vitis 2020.1开发环境中,Microblaze SREC SPI Bootloader初始化失败的常见原因与解决方案。核心问题通常源于Flash上电时序或软件配置,如`serial_flash_family`参数未生效、链接脚本设置不当或BRAM初始化文件选择错误。文章提供了从硬件配置检查、工程设置修正到代码级添加重试机制的完整调试路径,帮助开发者快速定位并修复启动故障,确保系统稳定启动。

weixin_29163857的博客 186

Spring 有几种事务隔离级别?

事务隔离级别是对事务 4 大特性中隔离性的具体体现,使用事务隔离级别可以控制并发事务在同时执行时的某种行为。比如,有两个事务同时操作同一张表,此时有一个事务修改了这张表的数据,但尚未提交事务,那么在另一个事务中,要不要(或者说能不能)看到其他事务尚未提交的数据呢?这个问题的答案就要看事务的隔离级别了,不同的事务隔离级别,对应的行为模式也是不一样的(有些隔离级别可以看到其他事务尚未提交的数据,有些事务隔离级别看不到其他事务尚未提交的数据),这就是事务隔离级别的作用。

知识分享官 1万+

comfyui从入门到精通二:提示词规则详解

《AI绘画提示词使用全指南》摘要: 本文系统解析AI绘画提示词的核心规则与实用技巧。关键点包括:1) 空格与下划线的本质差异,webui会自动转换但comfyui保留原格式;2) 数字与单词表达(如1girl/one girl)会导致风格变化;3) 三种权重控制方式(数值标注、括号嵌套、位置效应),其中数值标注最直观有效;4) 位置衰减公式揭示提示词排序对效果的影响权重。同时指出当前AI绘画仍存在角色一致性等更复杂的技术瓶颈。全文通过多组对比实验,为创作者提供从基础语法到高阶控制的完整解决方案。

ScottePerk的博客 1926

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

本文讲述英飞凌TC3xx的通用计时器GTM的架构。

无所适从的我的博客 4596

Spring事务的5个隔离级别

在Spring中定义了5中不同的事务隔离级别: 1. ISOLATION_DEFAULT(一般情况下使用这种配置既可) 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。 2. ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复...

EyeJava 370

全面解析智能座舱芯片参数:高通 (SA8295)vs 联发科,真实案例一行行讲给你听!

使用场景推荐芯片中低端车型 + 1屏导航语音SA8155P / MT8628(性价比高)中控+副驾+仪表+全景影像SA8255P / MT8678(性能强)高阶自动驾驶+域控融合SA8295P(顶级安全+算力)

weixin_43199439的博客 2076

Spring事务隔离级别详解

Spring事务隔离级别详解

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 2829

智能交通实战:基于YOLOv5/8/10的车辆违章行为检测系统(违停/压线/逆行识别)

在开始模型训练前,我们得明确要检测的违章行为,还要准备好对应的数据集,这就像做饭前要确定做什么菜、准备什么食材一样。通过本指南,你已经掌握了从技术选型(YOLOv5/8/10)数据准备模型训练到UI界面开发的全流程,搭建了一套完整的车辆违章行为检测系统。这个系统在实际应用中,能有效识别多种车辆违章行为,检测准确率高、速度快,可用于智能交通管理、停车场管理等多个场景。随着深度学习技术的不断进步,YOLO系列模型在车辆违章检测领域的应用会越来越广泛。

m0_71589036的博客 460

高质量文献综述原来这么写!借助Gemini 3 Pro+四步法,手把手教你写出有逻辑深度的综述

总结与展望先总结现状,说明前人已经做到什么地步了,再指出缺口,前人没解决什么问题、方法有什么局限等等,最后再在这个缺口的基础上,提出你的未来研究方向。当你有个复杂的研究题目,但没办法拆解出关键词,就可以让Gemini 3 Pro来辅助帮你拆解,并帮你写专业的检索式,若是找英文文献,还能帮你将中文关键词翻译成地道的专业术语。做文献笔记,可以建立文献笔记矩阵,可以用Excel建个表格,横向是文献,纵向是关键要素,包括作者/年份、研究问题/假设、理论框架/模型、研究方法/数据来源、核心结论、局限性/Gap。

智能AI让学术科研更容易 992

spring事务隔离级别、传播行为以及spring+mybatis+atomikos实现分布式事务管理

1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功。其必须遵循四个原则(ACID)。 2.事务隔离级别:spring有五大隔离级别,其在TransactionDefinition中定义 3.事务传播行为:七大传播行为

半山闲人的专栏 2万+

Android Binder——数据传递载体(二十一)

同一进程间的对象传递都是通过引用来做的,因而本质上就是传递了一个内存地址。而跨进程采用了虚拟内存机制,两个进程都有自己独立的内存地址空间,所以跨进程传递的地址值是无效的。进程间的数据传递是 Binder 机制中的重要一环,Android 系统中担负这一重任的就是 Parcel。Parcel 是一种数据的载体,用于承载希望通过 IBinder 发送的相关信息(包括数据和对象引用)。正是基于 Parcel 这种跨进程传输数据的能力,进程间的 IPC 通信才能更加平滑可靠。

小旭的专栏 576

数据库隔离级别 database isolation level

隔离级别(isolation level) l 隔离级别定义了事务与事务之间的隔离程度。 l 隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。 l ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别: l 未提交读(read uncommitted) l 提交读(read committed) l 重

dean_peng的专栏 8076

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

「DB」数据库事务的隔离级别

*博客搬家:初版发布于 2017/04/10 00:37 原博客地址:https://my.oschina.net/sunqinwen/blog/875833 数据库事务的隔离级别 讲事务的隔离级别之前,先来介绍一下数据库事务的几个特性: (1)原子性 最基本的特性,意思是在一个事务内里所有关于数据库的操作,要么全部成功,要么全部失败;成功时意味着本次操作所有数据库相关的写操...

weixin_30438813的博客 187

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【DB究谈】浅谈对数据库隔离级别的理解

浅谈对数据库隔离级别的理解当人们提及数据库管理系统(DBMS),必会提及事务、ACID特性以及事务隔离级别。事务本身是为了保证系统的运行状态最终将处于一致性(满足一组约束条件)的状态而出现的概念,其中的ACID特性中的I(Isolation)要保证在并发操作情况下数据库最终可以处于”一致”的状态。但是自问一下便会产生诸多疑点: 到底什么是事务隔离级别?为什么要有事务隔离级别?作为理论基础的每种隔离...

didi_cloud的博客 404

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数据库隔离级别 database isolation level

隔离级别(isolation level) l 隔离级别定义了事务与事务之间的隔离程度。 l 隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好。 l ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别: l 未提交读(read uncommitted) l 提交读(read committed) l 重

heizistudio的专栏 1308

数据库隔离级别—Database Isolation Level

事务隔离级别用以控制 读取数据时是否需要获取锁以及获取何种类型的锁。 锁的持有时间。 当读取正在被其他事务修改的数据时: 是阻塞读一直等到排他锁释放 还是读取已提交(Read committed) 抑或读取尚未提交的修改数据(Read uncommitted )。 设置置事务隔离级别并不会影响你修改数据所获取的锁,因为在事务中任何涉及数据修改都是排他锁,直至事务结束才会释放,无论你设置的事

helloworld的专栏 1569

数据库事务隔离级别的总结

数据库隔离级别,脏读,幻读,不可重复读,RR隔离级别下的幻读问题

cab5的博客 2083

Spring事务隔离级别与数据库隔离级别不一致时,该以谁为准?

项目中,以 Spring 事务为准,因为他重写了数据库的隔离级别,但没有直接修改数据库的隔离级别

Java Punk 6067

数据库的隔离级别有哪些?

数据库、隔离级别

流浪者的博客 1万+

数据库事务(Database Transaction) --四个隔离级别

  是指作为单个逻辑工作单元执行的一系列数据操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的一个逻辑工作单位,由...

weixin_28760063的博客 881

数据库的隔离级别

这里写目录标题数据库的隔离级别Mysql和Oracle的隔离级别数据库隔离性设置不同会出现的问题(脏读、不可重复读、丢失修改、幻读)脏读不可重复读幻读(虚读)丢失修改 数据库的隔离级别 为了达到事务的四大特性,数据库定义了4种不同的事务隔离级别,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable。 READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读

TABE_的博客 1112
上一篇: Hibernate 配置 属性
下一篇: struts2的执行流程
sorta
博客等级 码龄18年 0粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值