什么是事务
在数据库管理系统中,事务(Transaction)是执行一系列操作的最小工作单元,这些操作要么全部成功,要么全部失败。为了确保数据的一致性和完整性,事务被设计为具备四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),通常简称为ACID。下面将详细介绍这四个特性。
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单元,事务中的操作要么全部执行,要么全部不执行。换句话说,事务在执行过程中,如果发生任何错误或异常,事务中的已执行操作必须被撤销,使数据库状态恢复到事务开始之前的状态,就像这个事务从未执行过一样。原子性确保了数据库状态的完整性,防止了部分操作成功、部分操作失败导致的数据库不一致。
一致性(Consistency)
一致性是指事务执行前后,数据库的完整性约束没有被破坏。这意味着事务在执行过程中,必须保证数据库从一个一致性状态转变到另一个一致性状态。一致性约束了数据库状态的变化,确保事务执行后数据库中的所有数据都满足业务规则、完整性约束和触发器等条件。如果事务在执行过程中违反了这些约束,事务将被终止,数据库状态将回滚到事务开始之前的状态。
隔离性(Isolation)
隔离性是指多个事务在并发执行时,它们之间的操作是相互隔离的,互不干扰。这意味着一个事务的内部操作对其他并发事务是不可见的,直到该事务提交。隔离性确保了事务的并发执行不会导致数据不一致。为了实现隔离性,数据库系统通常会采用锁机制、时间戳排序或乐观并发控制等技术。不同的隔离级别(如读未提交、读已提交、可重复读和串行化)提供了不同程度的隔离性保障。
持久性(Durability)
持久性是指一旦事务提交,其对数据库的影响将是永久性的,即使系统崩溃或断电,这些影响也不会丢失。持久性确保了事务在提交后,其修改的数据被永久地保存在数据库中,不会因为系统故障而丢失。为了实现持久性,数据库系统通常会将事务的修改记录到持久存储介质(如磁盘)上,并在事务提交时确保这些记录被成功写入。
隔离性的重要性
隔离性是指数据库提供一定的隔离机制,使得多个并发执行的事务不会相互影响,其对数据库的影响和它们串行执行时一样。然而,不同的隔离级别决定了事务隔离性的独立程度。如果隔离的不够好,可能会产生脏读、不可重复读和幻读等问题。
脏读(Dirty Read)
脏读是指一个事务读取了另一个事务未提交的更新结果。如果未提交的事务最终回滚,那么读取到的数据就是无效的,即脏数据。脏读会导致数据不一致。
不可重复读(Nonrepeatable Read)
不可重复读是指同一个事务在事务过程中多次读取同一个数据,得到的结果不同。这通常发生在另一个事务在第一次读取和第二次读取之间更新了该数据。
幻读(Phantom Read)
幻读是指一个事务在多次执行相同的查询时,由于其他事务在查询范围内插入了新记录,导致查询结果不一致。
事务隔离级别
为了解决上述并发访问问题,SQL标准定义了四种事务隔离级别,从低到高分别是:
读未提交(Read Uncommitted)
这是最低的隔离级别。在这种级别下,一个事务可以读取另一个事务未提交的更新结果。这种级别最容易产生脏读问题,因为读取的数据可能是无效的。
读已提交(Read Committed)
这是SQL Server的默认隔离级别。在这种级别下,一个事务只能读取另一个事务已经提交的更新结果。这种级别可以避免脏读问题,但仍可能出现不可重复读和幻读问题。
可重复读(Repeatable Read)
这是MySQL的默认隔离级别。在这种级别下,同一个事务在多次读取同一数据时,得到的结果是一致的。这解决了脏读和不可重复读问题,但仍可能产生幻读问题。为了实现这一点,数据库会在事务期间对读取的记录加锁,防止其他事务修改这些记录。
串行化(Serializable)
这是最高的隔离级别。在这种级别下,事务按序列化的方式执行,每个事务执行时,数据库会将该事务的所有操作按顺序排队执行,对其他事务的访问进行阻塞。这种级别避免了所有并发问题(脏读、不可重复读和幻读),但代价是牺牲了系统的并发性。
隔离级别与系统性能
需要注意的是,隔离级别与系统并发性成反比,与数据一致性成正比。较高的隔离级别可以提供更强的数据一致性保障,但会降低系统的并发性。因此,在选择隔离级别时,需要根据具体的业务需求进行权衡。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/2401_87476016/article/details/144628770
相关文章:
什么是事务
在数据库管理系统中,事务(Transaction)是执行一系列操作的最小工作单元,这些操作要么全部成功,要么全部失败。为了确保数据的一致性和完整性,事务被设计为具备四大特性,即原子性(Ato…...
数据结构:双向循坏链表
目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插,头删 ,尾插,尾删 1.1双向循环链表的结构 …...
3.1、SDH的5种标准容器
1、定义与作用 在 SDH(同步数字体系)中,标准容器(C)是一种用来装载各种速率的 PDH(准同步数字系列)信号的信息结构。它的主要作用是进行速率适配,使不同速率的 PDH 信号能够在 SDH 的…...
Jenkins介绍
Jenkins 是一款流行的开源自动化服务器,在软件开发和持续集成 / 持续交付(CI/CD)流程中发挥着关键作用。 一、主要功能 1.持续集成(CI) (1).自动构建:Jenkins 可以配置为监听代码仓…...
5G学习笔记之Non-Public Network
目录 0. NPN系列 1. 概述 2. SNPN 2.1 SNPN概述 2.2 SNPN架构 2.3 SNPN部署 2.3.1 完全独立 2.3.2 共享PLMN基站 2.3.3 共享PLMN基站和PLMN频谱 3. PNI-NPN 3.1 PNI-NPN概述 3.2 PNI-NPN部署 3.2.1 UPF独立 3.2.2 完全共享 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】S…...
网页生成鸿蒙App
如何网页生成鸿蒙App 纯鸿蒙发布后,鸿蒙App需求上升。如何快速生成鸿蒙App。变色龙云(http://www.appbsl.cn)推出了鸿蒙App打包服务。可以在线自动打包鸿蒙App。 第一步 创建应用 输入网站网址,上传图标。 第二步 生成鸿蒙证书 打开华为开发者管理中…...
JavaWeb通过Web查询数据库内容:(pfour_webquerymysql)
JavaWeb通过Web查询数据库内容: 数据库: 自行建库建表,主键 id 后端: 新建项目模块选择模块,添加依赖创建配置文件: db.propertiesJava类: query查询 前端: Web添加创建query.html…...
将java项目部署到linux
命令解析 Dockerfile: Dockerfile 是一个文本文件,包含了所有必要的指令来组装(build)一个 Docker 镜像。 docker build: 根据 Dockerfile 或标准指令来构建一个新的镜像。 docker save: 将本地镜像保存为一个 tar 文件。 docker load: 从…...
moviepy将图片序列制作成视频并加载字幕 - python 实现
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...
ROS1入门教程5:简单行为处理
一、新建项目 # 创建工作空间 mkdir -p demo5/src && cd demo5# 初始化工作空间 catkin_make# 创建功能包 cd src catkin_create_pkg demo roscpp actionlib_msgs message_generation tf 二、创建行为 # 创建行为目录 mkdir action && cd action# 创建行为文…...
Vue:实现输入框不能输负数功能
1、使用v-model指令 <input type"number" v-model"value" min"0" input"checkInput"> checkInput() {this.value Math.max(0, parseInt(this.value)); } 2、使用计算属性 <template><div><input type"…...
管理系统、微信小程序类源码文档-哔哩哔哩教程同步
文章目录 前言通用表基于JavaSpringBootVue前后端分离手机销售商城系统设计实现:基于JavaSpringBootVueuniapp实现大学生校园兼职微信小程序更新中。。。评论区打出你的题目 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能…...
AOP切点表达式之方法表达式execution
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
clickhouse-题库
1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库,主要用于在线分析查询 2、列式存储和行式存储有什么区别? 行式存储: 1)、数据是按行存储的 2)、没有建立索引的查询消耗很大的IO 3)、建…...
在 Sanic 应用中使用内存缓存管理 IP 黑名单
[外链图片转存中…(img-Pm0K9mzd-1734859380698)] 在现代 web 应用中,保护 API 接口免受恶意请求的攻击至关重要。IP 黑名单是一种常见的安全措施,可以有效阻止某些 IP 地址的访问。本文将介绍如何在 Python 的 Sanic 框架中实现 IP 黑名单功能…...
可翻折的CPCI导冷板卡插拔机构
本技术涉及一种cpci板卡模块拔插,尤其涉及一种可翻折的cpci导冷板卡插拔机构。 背景技术: 1、cpci(compactpci)导冷板卡是一种基于compactpci计算机总线标准的卡式电子模块,它在标准的cpci架构之上增加了导热板来提高散热能力,常…...
面试题整理9----谈谈对k8s的理解2
面试题整理9----谈谈对k8s的理解2 1. Service 资源1.1 ServiceClusterIPNodePortLoadBalancerIngressExternalName 1.2 Endpoints1.3 Ingress1.4 EndpointSlice1.5 IngressClass 2. 配置和存储资源2.1 ConfigMap2.2 Secret2.3 PersistentVolume2.4 PersistentVolumeClaim2.5 St…...
12个城市人文扫街、旅拍、人像风光摄影后期Lightroom调色预设
12个城市人文扫街、旅拍、人像风光摄影后期Lightroom调色预设 12 个专为城市场景设计的专业 Adobe Lightroom 预设。只需单击一下,即可通过一致、专业的基础简化您的编辑流程。 Lightroom & Lightroom Classic,桌面和移动兼容包括 12 张由 pat_kay…...
无人设备遥控器之数传功率篇
一、数传功率的基本概念 数传功率是指遥控器发射端在传输数据时所使用的功率。这个功率值直接影响了数据传输的距离和信号强度。一般来说,数传功率越大,遥控器与无人设备之间的通信距离就越远,信号强度也相应增强。 二、数传功率的调节与选择…...
灭屏情况下,飞行模式+静音模式+插耳,播放音乐,电流异常
1. 功耗现象 灭屏情况下,飞行模式静音模式插耳,播放音乐,电流异常 1.1测试数据 飞行模式静音模式插耳机 原生音乐播放器 DriverOnly 32.5mA User版本 45mA 1.2 电流波形现象 上述看怀疑 CPU 未进入 Deep idle 导致? 2. …...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
