事务基础概念

事务

事务是什么?

事务是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有命令作为一个整体一起向系统提交或者撤销操作请求,即统一这组命令要么一起执行,要么一起不执行

简短概况就是:事务即是一组命令序列,他们要么一起执行;要么一起不执行;从而保证了数据的完整性和统一性。

事务的特性

acid特性:原子性,一致性,隔离性,持久性

原子性atomicity

事务是一个不可分割的整体,事务中的所有操作要么一起执行,要么一起不执行。而事务中只要有一个操作不成功,那么整个事务都将会被回滚。 ​ 案例:a向b转账1000元,当只执行了扣款语句时断电了,a账号发生了扣款,b账号却没有收到打款。此时事务的原子性就会来保证事务要么都执行,要么都不执行了。 ​

一致性cinsustency

事务开始前和事务执行结束后,数据库的完整性约束没有被破坏。
即事务开始前,数据库的数据处于一致状态;事务完成时,数据也必须处于一致状态。当事务运行时,数据可能会处于不一致的状态,但当事务完成时,数据必须回到一致状态。

案例:
对银行转账事务,不管事务成功与否,都应该再事务结束后保持前后二者存款总额与事务执行前一致

当多个用户对同一个表进行操作时,可能会出现以下一致性问题:
1脏读
a修改了这条数据但未提交后,此时b却可以看到a这条未提交的修改记录。--脏读

2不可重复读
a在一个事务c内,反复读取同一个数据时。在这个事务还没有结束时,b在另一个事务d中也访问了这个数据。那么,再第一个事务c中读到数次的数据,可能由于第二个事务d的修改,导致第一个事务c读到的数据前后不一致。--不可重复读

3幻读
一个事务对表中的所有数据进行了修改;同时,另一个事务向这个表添加了数据,操作第一个事务的用户会发现:表中还有一行数据没有被修改,像中了幻觉一样。--幻读

4丢失更新
两个事务同时读取同一条记录,a先修改记录,b也修改记录;当b提交后,那么a修改的结果会被b修改的结果覆盖。--丢失更新

隔离性

隔离性确保并发执行事务的状态保存与顺序执行事务时的状态相同

持久性

事务完成后,该事务对数据库所做的更改会持久的保存在数据库中,并且不会被回滚;
即不够系统是否发生故障,事务处理的结果都是永久的。一旦事务被提交,那么事务的效果将会永久的保存在数据库中。

总结

事务管理中,原子性是基础,隔离性是手段,一致性是目的,持久性是结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四、【API 开发篇 (上)】:使用 Django REST Framework 构建项目与模块 CRUD API

【API 开发篇 】:使用 Django REST Framework 构建项目与模块 CRUD API 前言为什么选择 Django REST Framework (DRF)?第一步:创建 Serializers (序列化器)第二步:创建 ViewSets (视图集)第三步:配置 URLs (路由)第四步…

【北京盈达科技】GEO优化中的多模态了解

多模态数据处理领域,“模态”指的是不同类型的数据形式,每种模态都具有独特的结构和信息表达方式。以下是12种可能的模态类型,这些模态在实际应用中可以根据具体场景进行组合和处理: 1. 文本模态 描述:以文字形式存在…

推进可解释人工智能迈向类人智能讨论总结分享

目录 一、探索“可解释人工智能”:AI如何从“黑箱”走向“透明大师” 二、走进可解释人工智能:让AI的决策变得透明 (一)几种常见的特征导向方法 (二)像素级方法 1. 层次相关传播(LRP&#…

【Qt】Qt 5.9.7使用MSVC2015 64Bit编译器

环境 Qt版本:5.9.7 VS版本:VS2022 步骤 1、安装VS2022 三个必选项: a、使用C的桌面开发 b、Windows10 SDK 版本:10.0.18362.0 c、MSVC v140 VS 2015 生成工具 Windows10 SDK安装完成后,需要增加安装调试器。 2…

超越OpenAI CodeX的软件工程智能体:Jules

目前AI编码代理(coding agent)领域正迅速崛起,Google推出了一款名为Jules的非同步编码代理(asynchronous coding agent),主要针对专业开发者,与传统在开发环境中直接辅助编码的Cursor或Windsurf…

springboot使用xdoc-report包导出word

背景:项目需要使用xdoc-report.jar根据设置好的word模版,自动填入数据 导出word 框架使用 我的需求是我做一个模板然后往里面填充内容就导出我想要的word文件,问了下chatgpt还有百度,最后选用了xdocreport这个框架,主…

CodeBuddy实现pdf批量加密

本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 前言 在信息爆炸的时代,PDF 格式因其跨平台性和格式稳定性,成为办公、学术、商业等领域传递信息的重要载体。从机密合同到个人隐私文档&#xff0c…

如何在PyCharm2025中设置conda的多个Python版本

前言 体验的最新版本的PyCharm(Community)2025.1.1,发现和以前的版本有所不同。特别是使用Anaconda中的多个版本的Python的时候。 关于基于Anaconda中多个Python版本的使用,以及对应的Pycharm(2023版)的使用,可以参考…

STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板

导言 《STM32F103_LL库寄存器学习笔记12.2 - 串口DMA高效收发实战2:进一步提高串口接收的效率》前阵子完成的LL库与寄存器版本的代码,有一个明显的缺点是不支持多实例化。最近,计划基于HAL库系统地梳理一遍bootloader程序开发。在bootloader程…

【数据结构】栈和队列(上)

目录 一、栈(先进后出、后进先出的线性表) 1、栈的概念及结构 2、栈的底层结构分析 二、代码实现 1、定义一个栈 2、栈的初始化 3、入栈 3、增容 4、出栈 5、取栈顶 6、销毁栈 一、栈(先进后出、后进先出的线性表) 1、…

Vue 3 官方 Hooks 的用法与实现原理

Vue 3 引入了 Composition API,使得生命周期钩子(hooks)在函数式风格中更清晰地表达。本篇文章将从官方 hooks 的使用、实现原理以及自定义 hooks 的结构化思路出发,全面理解 Vue 3 的 hooks 系统。 📘 1. Vue 3 官方生…

大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置

MCP 基本介绍 官方地址: https://modelcontextprotocol.io/introduction “MCP 是一种开放协议,旨在标准化应用程序向大型语言模型(LLM)提供上下文的方式。可以把 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 提供了一种…

云原生安全之PaaS:从基础到实践的技术指南

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 云原生安全之PaaS:从基础到实践的技术指南 一、基础概念 PaaS(Platform as a Service)平台 PaaS是一种云计算服务模型,为开发者提供应用程序的开发、部署和运行环境,涵…

Chrome中http被强转成https问题

原因:2023年11月1日,chrome发布HTTPS-Upgrades功能,在用户访问 http:// 的旧链接之后,会自动尝试跳转到通过加密的 https:// 协议,访问该网站。且探测到 https 服务存在也会自动改成 https。 亲测两种方案可行&#x…

Linux 操作文本文件列数据的常用命令

文章目录 Linux 操作文本文件列数据的常用命令基本列处理命令高级列处理列数据转换和排序列数据统计和分析 Linux 操作文本文件列数据的常用命令 Linux 提供了多种强大的命令来处理文本文件中的列数据,以下是一些最常用的命令和工具: 基本列处理命令 c…

如何理解线性判别分析(LDA)算法?

在高维数据空间中,特征变量呈指数级增长,信息分布密集且复杂。研究者在面对海量特征时,仿佛置身于一幅结构高度抽象且维度交织的多变量图景之中,其解析与建模犹如在一幅复杂的数据宇宙图谱中导航,既需理论框架的指引,也依赖于算法工具的精确刻画。如何从众多维度中筛选出…

鸿蒙UI开发——Builder函数的封装

1、问题引入 我们在开发中可能会遇到这样一个问题:将一个Builder修饰后的函数用变量或者数组记录下来,在业务其他地方使用这些Builder函数。 举个例子,有下面一段代码: Builderfunction builderElement() {}let builderArr: Fu…

ARM笔记-ARM指令集

第三章 ARM指令集 3.1 ARM指令集简介 ARM微处理器的ARM指令集 ,所有的指令长度都是32位 ,并且大多数指令都在一个单独指令周期内执行。 主要特点: 指令是条件执行的ARM微处理器的指令集是加载/存储型的在多寄存器操作指令中一次最多可以完成…

Spring Boot接口通用返回值设计与实现最佳实践

一、核心返回值模型设计(增强版) package com.chat.common;import com.chat.util.I18nUtil; import com.chat.util.TraceUtil; import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter;import java.io.Serializable;/*** 功能: 通…

2025年上半年软件架构师考试回忆版【持续更新】

文章目录 案例分析1、端AI相对于云AI的优势2、redis持久化,主从库3、解释器架构风格4、知识图谱5、区块链 论文1、基于事件驱动的模型2、多模型数据库及其应用3、负载均衡设计方法4、论软件测试理论及其应用 考试感受 2025年软件考试架构考试于5月24日如期举行&…