数据库:事务:ACID属性,隔离级别以及异常情况

SQL的事务及其ACID属性 想象一个使用SQL作为数据库的银行系统。用户A想要把一些钱存入用户B的账户。如果他们发送了这笔钱,我们从他们的账户余额中取出这笔钱,然后想要把这笔钱存入用户B的账户,但突然我们的数据库崩溃了。这意味着我们从用户A的余额中取出的钱消失了吗?不,因为SQL数据库使用SQL事务来处理这些情况。 阅读详情

定义

事务:事务是一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的单位,是数据库环境中的逻辑工作单位,事务是为了保证数据完整性。

事务不能嵌套。
事务的结束:
1.正常提交commit,或者回滚rollback;
2.自动提交,一般情况下关闭,效率低
3.用户关闭会话之后,会自动提交事务
4.系统崩溃或者断电之后会回滚事务,即将数据恢复到上一个状态

事务的ACID属性

A原子性

表示不可分割,一个操作集合要么全部操作成功,要么操作失败,不可以从中间做切分。

C一致性

一致性代表了底层数据库的完整性。最终是为了保证数据的一致性,当经过N多个操作之后,数据的状态不会发生改变。
从一个一致性状态到另一个一致性状态,也就是数据不可以发生错乱。

I隔离性

各个事务之间相互不会产生影响。(隔离级别)
严格的隔离性会导致效率降低,在某些情况下为了提高程序的执行效率,会降低程序的隔离级别。

隔离级别以及异常情况

读未提交

读未提交,也叫未提交读,该隔离级别的事务可以看到其他事务中未提交的数据。该隔离级别因为可以读取到其他事务中未提交的数据,而未提交的数据可能会发生回滚,因此我们把该级别读取到的数据称之为脏数据,把这个问题称之为脏读。

读已提交

读已提交,也叫提交读,该隔离级别的事务能读取到已经提交事务的数据,因此它不会有脏读问题。但由于在事务的执行中可以读取到其他事务提交的结果,所以在不同时间的相同 SQL 查询中,可能会得到不同的结果,这种现象叫做不可重复读。

可重复读

可重复读,MySQL 默认的事务隔离级别。可重复读可以解决“不可重复读”的问题,但还存在幻读的问题。所谓的幻读指的是,在同一事务的不同时间使用相同 SQL 查询时,会产生不同的结果。例如,一个 SELECT 被执行了两次,但是第二次返回了第一次没有返回的一行,那么这一行就是一个“幻像”行。

注意:幻读和不可重复读的侧重点是不同的,不可重复读侧重于数据修改,两次读取到的同一行数据不一样;而幻读侧重于添加或删除,两次查询返回的数据行数不同。

序列化

序列化,事务最高隔离级别,它会强制事务排序,使之不会发生冲突,从而解决了脏读、不可重复读和幻读问题,但因为执行效率低,所以真正使用的场景并不多。

不可重复读针对的是值的不同,幻读指的是数据条数的不同。

隔离级别异常情况异常情况异常情况
读未提交脏读幻读不可重复读
读已提交幻读不可重复读
可重复读幻读
系列化

D持久性

所有数据的修改都必须要持久化到存储介质中,不会因为应用程序的关闭而导致数据丢失

四个属性中最重要的是C一致性,其他属性都是为了保证数据的一致性!

 锁的机制:
 为了解决在并发访问的时候,数据不一致的问题,需要给数据加锁
 加锁的同时需要考虑《粒度》的问题:
     操作的对象
        数据库
        表
        行
 一般情况下,锁的粒度越小,效率越高,粒度越大,效率越低 
        在实际的工作环境中,大部分的操作都是行级锁  
数据库事务处理:ACID特性与隔离级别 读未提交(Read Uncommitted)读已提交(Read Committed)可重复读(Repeatable Read)可串行化(Serializable) 阅读详情

相关推荐

双网隔离桌面虚拟化解决方案

双网隔离桌面虚拟化解决方案

数据持久化

数据持久化企业数据架构存储技术存储架构 企业数据架构 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中,如磁盘等。 数据按存储类型可以分为缓存数据库、关系型数据库、NoSQL数据库、图片和视频等文件的对象存储数据库等。 其中缓存数据库是应用内存存储数据,其余的存储类型都是持久化的存储。 联机交易区,即需要进行OLTP(On-line Transaction Processing,联机事务处理)的数据区域,与统计分析区相比,数据为近期产生的,热度较高,数据量相对较

lxw的博客 8070

esim分布式云卡池技术

eSIM卡,即Embedded-SIM,嵌入式SIM卡。eSIM卡的概念就是将传统SIM卡直接嵌入到设备芯片上,而不是作为独立的可移除零部件加入设备中,用户无需插入物理SIM卡。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁设备、购买新设备的前提下随时更换运营商。未来通用的eSIM标准建立将为普通消费者、企业用户节省更多移动设备使用成本,并带来更多的便利、安全性。 2018年 3月7日,中国联通宣布,正式在上海、天津、广州、深圳、郑州、长沙6座城市率先启动“eSIM一号双终端”业务的办理。[.

著名博客 3707

磁盘数据库 vs 内存数据库

内存数据库全部数据存储在内存中,具备更极致的读写性能在数据库发展早期,由于硬件性能的局限,数据库系统通常采用基于磁盘的设计,数据在内存中进行相应处理并以磁盘块 为单位存储在磁盘上。而内...

1285

基于python+flask框架的基于微信小程序的CR公司建设项目信息管理系统-前台(开题+程序+论文) 计算机毕设

特别是随着移动互联网技术的普及,企业对便捷、高效的信息管理系统的需求日益迫切。另一方面,该系统集成了仓管、物料、财务、人事、供应商等多个模块,实现了数据的集中管理和信息共享,有助于企业实现精细化管理,降低运营成本,提升决策效率。:深入调研CR公司的业务需求,明确系统应具备的功能模块,包括仓管员管理模块(物料信息、退回记录、申请信息、仓库信息管理)、财务员管理模块(资金信息管理、采购与租赁款项处理)、人事管理模块、供应商管理模块、项目管理模块(项目信息、设备采购、物料采购、设备租赁)、以及考勤打卡模块等。

zhihao503的博客 960

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1084

mysql 事务 异常_解决Mysql事务异常

在使用事务进行Mysql操作时,会抛出异常信息:Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.InnoDB is ...

weixin_42165583的博客 766

【视频】GStreamer+WebRTC(九):使用NVIDIA硬编解码

2)下载 GStreamer-bad 插件包源码注意要下载和 GStreamer版本对应的插件包3)下载NVIDIA硬编解码SDK最新的SDK下载地址注意 GStreamer 1.24.2 中调用的 NVIDIA Video_Codec_SDK 不是最新的,先使用下面的方法,查看gst-plugins-bad-1.24.2.tar.xz 对应的NVIDIA Video_Codec_SDK 的版本是多少。

郭老二 260

数据库事务的特性(ACID)

数据库的事务是数据库中一系列(增删查改)操作的集合。 一般来说,事务的范围根据业务而定,比如转账、修改个人信息 转账:从A账户将200元转移到B账户 从A账户中扣除200元 将200元加入到B账户中 修改个人信息:比如个人信息由2部分组成,分别存于两张表“基本信息表”、“缴费信息表” 更新“基本信息表”信息 更新“缴费信息表”信息 其中为了保证事务是...

dongjizheng9270的博客 186

Python爬虫抓取淘宝商品详情页信息:从入门到高级技术应用

通过本篇博客,我们了解了如何使用Python爬虫抓取淘宝商品详情页的信息,如何使用requests和Selenium抓取静态和动态内容,如何应对淘宝的反爬虫机制,如何将抓取的数据保存到CSV文件等。随着爬虫技术的不断发展,开发者可以根据需要选择合适的工具和技术,如使用分布式爬虫框架提高抓取效率,或者利用OCR技术处理验证码等问题。在进行淘宝爬虫时,需要注意遵循相关法律法规和平台的爬虫政策,避免对平台造成过度的负担或侵犯其合法权益。

2201_76125261的博客 460

PTP(确时间协议,Precision Time Protocol)时间同步

主时钟定期发送带预估发送时间 t1 的报文(若支持硬件时间戳,实际 t1​ 由后续的Follow_Up报文携带)。所有设备启动后通过协商选举出唯一主时钟(Grandmaster),其余设备自动成为从时钟(Slave)。:从时钟记录接收时间 t2,随后向主时钟发送Delay_Req并记录发送时间 t3​。若使用支持PTP的交换机,可修正报文在交换机内的驻留时间,进一步提升精度。从时钟根据offset调整本地时钟,实现与主时钟同步。动态调整本地时钟,抵消传输延迟和时钟漂移。(或通过BMCA自动当选)。

努力努力努力 1303

数据库事务的ACID及隔离级别

文章目录ACID概念四大特性并发控制隔离级别串行化可重复读提交读未提交读默认隔离级别读现象举例脏读不可重复读幻读隔离级别 VS 读现象隔离级别 VS 锁持续时间 ACID 概念 在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务。 ACID特性是指数据库管理系统(DBMS)在写入或更新数据的过程中,为保证事务(transaction)是正确可

靖哥哥的博客 2347

AI翻译工具自动翻译日语视频生成srt中文字幕,支持离线轻松生成任意日语视频字幕!可选择支持显卡模式和cpu模式低显存也能用

【AI离线字幕神器:日语视频一键转中文字幕】推荐一款基于Faster-Whisper的本地化字幕工具,可离线生成日语视频的中文字幕(.srt格式),支持CPU/GPU加速处理。实测1小时视频最快4-5分钟完成翻译,无需联网保护隐私。操作简单只需拖拽文件,支持批量处理音频(mp3/wav)和视频(mp4/mkv)文件,还能自定义输出格式和参数调整。特别适合需要观看无字幕日语资料的用户,堪称技术宅必备神器。下载地址附后,包含详细使用教程和参数配置说明。

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

MySQL 事务详解:从 ACID 特性到隔离级别实践

事务(Transaction)是数据库中一组不可分割的操作集合,这组操作要么全部执行成功(提交),要么全部执行失败(回滚),不存在 “部分成功” 的中间状态。简单来说,事务就像生活中的 “打包操作”—— 比如网购时的 “下单 + 扣库存 + 减余额”,这三个步骤必须同时完成:如果下单成功但扣库存失败,订单就会变成 “无效单”;如果扣库存成功但减余额失败,用户就会 “白花钱”。而事务的作用,就是确保这一系列操作 “同生共死”。在 MySQL 中,事务由一个或多个 SQL 语句组成,且。

2402_84411549的博客 1809

【CANoe示例分析】SOMEIPWithvCDL_16

本示例来源于官方提供的示例工程:0004_基于vCDL实现SOMEIP通信_Demo\0004_基于vCDL实现SOMEIP通信_Demo\SOMEIPWithvCDL。

jasonj333 567

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据库事务的属性-ACID

数据库事务的属性-ACID   1、数据库事务的属性-ACID(四个英文单词的首写字母): 1)原子性(Atomicity) 所谓原子性就是将一组操作作为一个操作单元,是原子操作,即要么全部执行,要么全部不执行。 2)一致性(Consistency) 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统

it_man的专栏 9509

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

RDBMS-数据库事务ACID理解,及事务隔离级别

I.事务的4大特性(ACID)原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。一致性(Consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态。隔离性(Isolation):多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。持久性(Dur...

魔筝炼药师 3907

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

掌握 MySQL 事务:ACID、隔离级别详解

事务是关系型数据库中的重要概念,用于保证一组数据库操作作为一个单独的工作单元来执行。无论是银行转账、订单处理还是复杂的数据修改,事务都能保证操作的一致性和完整性。本文将带您从基础概念到高级技巧,全面了解 MySQL 事务的工作原理、使用方法和优化策略。

lingqu+wx bjmsb06 1059

在 Go 语言中使用 Redis 实现事务并保证 ACID 属性及理解隔离级别

在 Go 语言中,可以使用库来连接和操作 Redis,并使用 Redis 的事务功能来保证数据的一致性。通过开启事务、执行事务命令和提交事务,可以实现 Redis 事务的基本功能。同时,需要注意事务的 ACID 属性和一些注意事项,以确保事务的正确执行。Redis 的隔离级别相对较为简单,但在实际应用中,需要根据具体情况进行分析和处理,以保证数据的正确性和一致性。在 Redis 中,由于其事务的执行方式,通常不会出现脏读、不可重复读和幻读等问题。

m0_57836225的博客 1645

深入解析数据库事务的ACID特性与事务隔离级别

理解事务的 ACID 特性以及不同的事务隔离级别,对于开发高效、可靠的数据库应用至关重要。在并发环境下,事务隔离级别决定了数据的可见性和一致性,开发者需要根据具体场景权衡事务的隔离性与性能。虽然提供最强的隔离,但可能导致性能问题,因此在实际应用中,常常需要选择一个合适的隔离级别,平衡性能与数据一致性。通过了解并发问题(脏读、不可重复读和幻读),我们能够在数据库设计中做出合理的决策,确保数据的正确性和应用的高效性。

一碗黄焖鸡三碗米饭的博客 1308

数据库事务ACID以及隔离级别

数据库事务隔离级别

a347635191的博客 2525

Spring事务的基本原理、传播属性、隔离级别以及数据库事务

一、事务的基本要素(ACID) 事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功。其必须遵循四个原则(ACID)。 原子性(Atomicity):指一个事务要么全部执行,要么不执行,也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成。 ...

做最专业的总结 大师 2万+

Python 事务的 ACID 特性及数据库隔离级别的实现原理

A - Atomicity(原子性): 事务中的所有操作要么全部完成,要么全部不完成。这意味着如果事务的一部分失败,整个事务必须回滚到其初始状态。C - Consistency(一致性): 事务执行后,数据库必须处于一致的状态。任何违反数据库约束或规则的操作都不会被执行。I - Isolation(隔离性): 事务的执行是相互独立的,一个事务的执行不应该受到其他事务的影响。D - Durability(持久性): 一旦事务提交,其结果将是永久性的,即使系统发生故障也不会丢失。

2501_91171945的博客 1259

深入浅出数据库事务:ACID 特性与隔离级别详解

在数据库领域,事务是保证数据一致性和可靠性的核心机制。无论是银行转账、电商平台的订单处理,还是其他涉及数据更新的业务场景,事务都扮演着不可或缺的角色。本文将从理论和实践的角度,深入探讨事务的 ACID 特性及其隔离级别的实现原理,帮助你解决和理解并发操作中的脏读、不可重复读和幻读问题。一、什么是事务?事务是逻辑上的一组数据库操作,要么全部执行,要么全部不执行。它是数据库并发控制的基本单位,确保数据库从一个一致状态转换到另一个一致状态。事务的核心特性可以概括为ACID,即原子性、一致性、隔离性和持久性。

2201_75525624的博客 1401

Java事务的ACID属性和四种隔离级别和传播机制

Java事务的ACID属性和四种隔离级别和传播机制

天天吃面的博客 2913

数据库事务的ACID四大特性以及MySQL中的隔离级别

数据库事务的ACID四大特性以及MySQL中的隔离级别 事务是一个单独的逻辑工作单元,事务中的所有更新操作要么都执行,要么都不执行。事务保证了一系列更新操作的原子性。如果事务之间存在并发操作,则可以通过食物之间的隔离级别来实现事务的隔离,从而保证事务间数据的并发访问 一、事务的四大特性(ACID) 1) 概念阐述 1.原子性(Atomicity) 事务的所有操作在数据库中要么全部正确反映...

JiangNanMax的博客 6006
上一篇: 数据库sql语句的一些简单记录,包括exists,模糊查询,nvl,order by,交、并、全、差集
下一篇: 有关函数闭包
code_feien
博客等级 码龄7年 71粉丝 85原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值