事务隔离级别

MySQL事务隔离级别 本文主要探讨MySQL事务隔离级别的使用,具体什么场景使用啥,实战验证出现的并发事务问题 阅读详情

四种隔离级别:

隔离级别脏 读不可重复读取幻 像
读操作未提交(Read Uncommitted) 是 是 是
读操作已提交(Read Committed) 否 是 是
可重复读(Repeatable Read) 否 否 是
快照 否 否 否
可串行读(Serializable) 否 否 否

 

 SQL Server 还支持使用行版本控制的两个事务隔离级别:已提交读隔离 和 新事务隔离级别(快照)。

  • READ_COMMITTED_SNAPSHOT 数据库选项设置为 ON,提供语句级读取一致性。
  • ALLOW_SNAPSHOT_ISOLATION 数据库选项设置为 ON,提供事务级别的读取一致性。读取操作不获取页锁或行锁,读取其他事务修改的行时,读取操作将检索启动事务时存在的行的版本。(快照隔离)
  • SQL Server 不支持元数据的版本控制。在快照隔离下,显式事务中可以执行的 DDL 操作存在限制,BEGIN TRANSACTION 语句之后不允许使用任何公共语言运行时 (CLR) DDL 语句或下列 DDL 语句:ALTER TABLE、CREATE INDEX、CREATE XML INDEX、ALTER INDEX、DROP INDEX、DBCC REINDEX、ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME。
  • 已提交读隔离比快照隔离占用的 tempdb 空间少;已提交读隔离可用于分布式事务,而快照隔离不能用于分布式事务;已提交读隔离可用于大多数现有应用程序,而不需要进行任何更改。可以动态优化使用默认隔离级别(已提交读)编写的应用程序。已提交读的行为(是否使用行版本控制)是由数据库选项设置确定的,可以对其进行更改,而不会影响应用程序。
  • 快照隔离很容易发生不适用于使用行版本控制的已提交读隔离的更新冲突。当在快照隔离下运行的事务读取另一个事务稍后会修改的数据时,快照事务对同一数据的更新会导致更新冲突,该事务将终止并回滚。而使用行版本控制的已提交读隔离不存在此问题。

 隔离级别是根据称为 现象(Phenomena)的三个禁止操作序列来声明的:

名称描述

丢失更新

当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,就会发生这种情况。

 

脏读
(Dirty Read)

如果一个事务在提交操作结果之前,另一个事务可以看到该结果,就会发生这种情况。

 

不可重复读/模糊读
(Non-Repeatable Read)

如果一个事务在提交结果之前,另一个事务可以修改和删除它,就会发生这种情况。

 

幻像读
(Phantom Read)

当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,就会发生这种情况。

有删除,有新增。

 

锁分类关键字

粒度

ROWLOCK, PAGLOCK, TABLOCK, DBLOCK

模式

UPDLOCK, XLOCK

并发

NOLOCK, HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLEs

 

 

Transaction中IsolationLevel的类型定义如下:

Chaos 无法改写隔离级别更高的事务中的挂起的更改。
ReadCommitted 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。
ReadUncommitted 可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。  
RepeatableRead 在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。  

    使用该隔离级别将限制其他用户更新自己所持有的数据,以PK,IX(Unique)为依据的不限制插入。
Serializable 在DataSet上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。

    使用该隔离级别将限制其他用户更新自己所持有的数据,限制其他用户插入数据。 
Unspecified  正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。

 

附测试C#代码:

SQL Query:

-- BEGIN TRANSACTION
INSERT INTO Task (TaskID,SenderAliasID,TaskStatus)
VALUES('2009081215121000',3,3)

-- waitfor delay '00:00:00.200'

DELETE FROM Task WHERE TaskID='2009081215121000'
-- COMMIT

.

verilog学习——Verilog的行为建模/Behavioral modeling(2) 函数的用途是返回要在表达式中使用的值。函数定义始终以关键字function开始,后跟返回类型、名称和在参数中的端口列表。函数以关键字endfunction结束。函数至少有一个输入,如果不返回任何内容,则返回类型为void。由两种方法可以声明函数的输入;函数定义隐式地创建一个与函数同名的内部变量。通过将函数结果分配给内部变量来初始化返回值。函数调用是带有表达式的操作数。① 函数不能包含任何时间控制语句,如#、@、wait、posedge、negedge; 阅读详情

相关推荐

深入解析UE5内存分析:从Memreport到Unreal Insights

本文深入解析了UE5内存分析的两大核心工具:Memreport与Unreal Insights。Memreport提供详细的内存快照,帮助定位UObject等资源的内存占用;而Unreal Insights则能进行实时监控与历史回溯,精准追踪内存泄漏。掌握这两款工具是优化UE5项目性能、确保大型项目稳定运行的必备技能。

lg888的博客 1006

事务的隔离级别

事务的隔离级别 事务的四大特性分别是:原子性、一致性、隔离性、持久性 幻读和不可重复读都是在同一个事务中多次读取了其他事务已经提交的事务的数据导致每次读取的数据不一致,所不同的是不可重复读读取的是同一条数据,而幻读针对的是一批数据整体的统计(比如数据的个数) 以MYSQL数据库来分析四种隔离级别 第一种隔离级别:Read uncommitted(读未提交) 如果一个事务已经开始写数据,则另外一个事...

zhouym_的博客 16万+

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

东城绝神 1079

【MySQL事务】事务的隔离级别

正在进行中且尚未提交。

2301_80224556的博客 2120

利用正射影像对斜射图像进行反向投影

因此,RANSAC算法可以通过计算inliners和outliers的数量来评估估计关键点的质量,确保与其他点不一致的点不会在Homography矩阵中被估计。然后,它通过考虑关键点周围区域中图像的梯度大小和方向来计算每个提取的关键点的方向。由于单应性矩阵的计算可能会受到两个图像中异常值的存在的影响,这将导致矩阵的不正确估计并导致沿图像的对准和映射不良。FLANN匹配器的方法基于K近邻搜索的概念,即从图像中找到k个近邻。找到相机在正射影像坐标系中的位置并在正射影像上绘制重叠区域的边界框。

gis收藏家的博客 1511

ESP32-CAM图像糊成马赛克?OV2640参数调优保姆级教程(亮度/对比度/饱和度)

本文提供了一份详细的ESP32-CAM图像调优教程,针对OV2640摄像头常见的图像模糊问题,从分辨率设置、亮度/对比度/饱和度调整到高级寄存器配置,帮助用户优化网页显示画质。通过代码示例和实用技巧,解决马赛克、色彩暗淡等问题,提升摄像头性能。

weixin_30410119的博客 593

Spring事务隔离级别详解

Spring事务隔离级别详解

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

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 7430

【Spring】事务的隔离级别,Spring的事务隔离级别和事务传播机制

本文回顾了MySQL的四种事务隔离级别(读未提交、读提交、可重复读、串行化),并介绍了Spring框架中的五种事务隔离级别和七种事务传播机制。MySQL的隔离级别解决了并发事务的数据一致性问题,而Spring的事务传播机制则处理了事务在方法调用间的传递行为。文章详细说明了每种传播机制的特点,如REQUIRED(默认)、REQUIRES_NEW(创建新事务)等,并通过源码展示了Spring中枚举类的实现方式。最后提到可以通过@Transactional注解的isolation和propagation属性来设置

Yeeear的博客 1070

wireshark抓包分析TCP协议和用Fiddler抓包Https分析

wireshark抓包分析TCP协议和用Fiddler抓包Https分析 1.实验说明: 以某种游戏的客户端连接服务器、断开服务器为例,用wireshark抓包分析TCP协议的三次握手连接、四次握手断开,与计算机网络原理进行验证;用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 2.实验过程: wireshark实验: (1)实验准备:安装《洛克王国》游戏客户端, 运行洛克王国客户端,打开内存资源管理器查看PID 根据PID查看洛克王国服务端的IP地址和端口号 并打开命令行运行以下命令: n

qq_42032327的博客 1257

最新扣子智能体教程:手把手教你接入抖音评论区,实现自动回复

摘要:本文介绍如何利用扣子(Coze)平台搭建智能体实现抖音评论自动回复。从准备工作(账号注册、权限申请)到智能体创建(提示词优化、模型选择),再到抖音API接入和自动回复逻辑设置,详细说明了每个步骤的操作方法。文章还提供了回复模板示例和优化建议,帮助提升互动效率。通过这套方案,创作者可以显著减轻评论区管理压力,增强用户互动体验。(149字)

互联网架构师笔记 982

Spring 有几种事务隔离级别?

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

知识分享官 1万+

玩转企业微信群机器人:一份超详细的Webhook消息推送指南

企业微信群机器人是一个连接内部协作与外部服务的强大桥梁。通过灵活运用本文介绍的各种消息类型,你可以构建出丰富多彩、信息明确的自动化通知系统,极大地提升团队沟通效率。现在,就动手试试,将你的第一个机器人集成到工作流中吧!如果你有任何有趣的机器人应用场景或遇到了问题,欢迎在评论区留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3974

什么是事务和事务隔离级别

什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是: 1、原子性 即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败

weixin_44953227的博客 5742

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

efm32 入门.pdf

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

事务的隔离级别有哪些

按隔离水平高低排序如下:针对不同的隔离级别,并发事务时可能发生的现象也会不同。接下来,举个具体的例子来说明这四种隔离级别,有一张账户余额表,里面有一条账户余额为 100 万的记录。然后有两个并发的事务,事务 A 只负责查询余额,事务 B 则会将我的余额改成 200 万,下面是按照时间顺序执行两个事务的行为:这四种隔离级别具体是如何实现的呢?

qq_74475840的博客 942

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

事务的4种隔离级别

当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,所以,对于不同的事务,采用不同的隔离级别会有不同的结果。 如果不考虑事务的隔离性,那么会发生下表所示的3种问题: 不可重复读是由于事务并发修改同一条记录导致的,要避免这种情况,最简单的方法就是对要修改的记录加锁,这会导致锁竞争加剧,影响性能。另一种方法是通过MVCC可以在无锁的情况下,避免不可重复读。 幻读是由于并发事务增加记录导致的,这个不能像不可重复读通...

song_myth的博客 9244

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

关于事务及事务隔离级别的详细讲解

什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是: 1、原子性 即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子

君子慎独,不欺暗室;卑以自牧,不欺于心 2883

mysql事务隔离级别

隔离级别 MySQL是一个服务器/客户端架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。我们可以同时在不同的会话里输入各种语句,这些语句可以作为事务的一部分进行处理。不同的会话可以同时发送请求,也就是说服务器可能同时在处理多个事务,这样子就会导致不同的事务可能同时访问到相同的记录。我们前边说过事务有一个特性称之为...

laozhang0910的博客 8296

事务的四种隔离级别

目录1.数据库事务的隔离级别 1.数据库事务的隔离级别 由低到高分别有四种; 1.read uncommitted:读未提交,即一个事务可以读取另一个未提交事务的数据; 出现问题: 脏读:事务A读取到了事务B中未提交的数据,当事务B回滚后,事务A读取到的数据都是脏数据; 老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员...

107 9821

什么是事务隔离级别,事务隔离级别详解

生命中曾经有过的所有灿烂,原来终究,都需要用寂寞来偿还。 在IT行业,无论是oracle,mysql,还是postgresql数据库,为了保证数据库并发性能和数据一致性,都实现了MVCC功能(多版本并发控制)。用户通过会话访问数据库,内...

tpc4289的专栏 1867

Spring事务的隔离级别

事务隔离级别

weixin_61518137的博客 2122

事务及事务隔离级别

什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正确执行使得数据库从一种状态转换为另一种状态。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)的缩写,这四种状态的意思是: 1、原子性 即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败

qq_43842093的博客 624
上一篇: 如何有效防止系统邮件被视为垃圾邮件
下一篇: 常用
FBugFramework
博客等级 码龄23年 25粉丝 36原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值