MySQL原理(五)事务
一、介绍:
1、介绍:
在计算机术语中,事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。
2、事务的4大特性
原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
2.1、原子性(Atomicity):
事务是一个原子操作,它要么全部成功,要么全部失败回滚。如果事务中的任何操作失败,则所有操作都将回滚到之前的状态,以确保数据库中的数据不会被部分更改。
2.2、一致性(Consistency):
事务的执行必须使数据库从一个一致状态转换到另一个一致状态。这意味着事务必须满足所有约束条件,以保持数据的完整性和一致性。
2.3、隔离性(Isolation):
并发事务的执行不能相互干扰。事务必须在独立的空间内执行,这意味着它们看起来像是在独占访问数据库。
2.4、持久性(Durability):
一旦事务完成提交,其结果就是永久性的,并且即使在系统故障的情况下,也必须能够恢复这些结果。
注意,在firebird中,开启事务的方式是让调用程序使用StartTransaction(开启事务)、COMMIT(提交事务)和ROLLBACK(撤销事务)。
3、并发事务遇到问题:
(1)赃读:一个事务读到另外一个事务还没有提交的数据。
(2)不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
(3)幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 "幻影"。
二、事务隔离级别
1、四种隔离级别
为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种:(Serializable安全性最高,Uncommitted安全性最差)

之所以默认下第三个,是因为事务隔离级别越高,数据越安全,但是性能越低。
(1)查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;
(2)设置事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
2、mysql保障事务四大特性
2.1、原子性、一致性、持久化
实际上是由InnoDB中的两份日志来保证的,一份是redo log日志,一份是undo log日志。
(1)redo log:重做日志,负责记录的是事务提交时数据页的物理修改,即哪一页哪一行哪个字段做了什么修改。当数据库发生故障时,redo log可以用来恢复未完成的事务,实现事务的持久性。分为重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中。
(2)undo log:回滚日志,主要作用是在事务进行修改操作但还未提交之前,先记录下原始的数据状态。这样,当事务因为某些原因需要回滚或数据库发生故障时,可以利用undo log中的信息将数据恢复到事务开始前的状态。 作用包含两个 : 提供回滚(保证事务的原子性) 和MVCC(多版本并发控制) 。
(3)MVCC :全称 Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现,还需要依赖于数据库记录中的三个隐式字段、undo log日志、readView。
注:隐式字段:我们创建表(id,name,age)后,插入数据时,InnoDB还会自动的给我们添加三个隐藏字段,前两个字段是肯定会添加的, 是否添加最后一个字段DB_ROW_ID,得看当前表有没有主键,如果有主键,则不会添加该隐藏字段。

2.2、持久性:
是通过数据库的锁,加上MVCC来保证的。
相关文章:
MySQL原理(五)事务
一、介绍: 1、介绍: 在计算机术语中,事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。 2、事务的4大特性 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性…...
算法学习——华为机考题库4(HJ26 - HJ30)
算法学习——华为机考题库4(HJ26 - HJ30) HJ26 字符串排序 描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出…...
STM32学习笔记(三) —— GPIO点亮LED
1.GPIO简介 GPIO,全称是General-purpose input/output(通用输入输出)。在单片机中是表示能被控制的引脚,能检测输入信号的高低电平,也能输出高低电平控制外部设备。STM32F103RCT6一共有64个引脚,其中有51个…...
gRPC使用详解
起源特点主要优缺点应用场景组成部分使用方法SpringBoot集成gRPCVert.x集成gRPCNacos集成gRPC监控gRPC调用过程Java使用示例 起源 gRPC的起源可以追溯到2015年,当时谷歌发布了一款开源RPC框架,名为gRPC。gRPC的设计初衷是为了提供一种标准化、可通用和跨…...
海康威视有插件、无插件播放;webrtc直播;西瓜视频播放器;mpegts.js直播;flvjs直播
Notes 视频播放的几种方式 一、Video mp4链接直接播放 二、海康威视3.3插件版直播、云台控制,资源下载地址 index.html引入hk文件中的js文件双击HCWebSDKPlugin.exe安装插件前端参照文件夹hkCamera中的示例代码 三、海康威视3.2无插件版直播,资源下…...
测试工作(新入职)感悟
背景:我之前在小规模传统公司,工作强度一般,早九晚六,偶尔加班。现在就职的是大型同行业互联网公司,工作强度大,早九晚九,目前已经入职两个礼拜。 基于这个背景,新工作对我是比较有…...
hivesql的基础知识点
目录 一、各数据类型的基础知识点 1.1 数值类型 整数 小数 float double(常用) decimal(针对高精度) 1.2 日期类型 date datetime timestamp time year 1.3 字符串类型 char varchar / varchar2 blob /text tinyblob / tinytext mediumblob / mediumtext lon…...
Linux下的线程操作
一、多线程的创建于退出 1. pthread_create(线程的创建) pthread_create 是 POSIX 线程库中的函数,用于创建一个新的线程。 函数原型如下: int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void…...
机器学习 | 如何利用集成学习提高机器学习的性能?
目录 初识集成学习 Bagging与随机森林 Otto Group Product(实操) Boosting集成原理 初识集成学习 集成学习(Ensemble Learning)是一种通过组合多个基本模型来提高预测准确性和泛化能力的机器学习方法。它通过将多个模型的预测结果进行整合或投票来做…...
[Python] 什么是PCA降维技术以及scikit-learn中PCA类使用案例(图文教程,含详细代码)
什么是维度? 对于Numpy中数组来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维。索引以外的数据,不分行列的叫一维(此时shape返回唯一的维度上的数据个数),有行列…...
npm 淘宝镜像正式到期,更新使用成功
npm 淘宝镜像原网址:https://registry.npm.taobao.org/ npm 淘宝镜像更新后网址:https://registry.npmmirror.com 过程: 部署 nuxt docker 容器的时候,报以下错: npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CE…...
python_蓝桥杯刷题记录_笔记_全AC代码_入门2
前言 现在正式进入蓝桥杯的刷题啦,用python来做算法题,因为我之前其实都是用C来做题的,但是今年的话我打算换python来试试,很明显因为也才这学期接触python 加上之前C做题也比较菜,所以我打算用python重新来做题&#…...
备战蓝桥杯---数据结构与STL应用(入门4)
本专题主要是关于利用优先队列解决贪心选择上的“反悔”问题 话不多说,直接看题: 下面为分析: 很显然,我们在整体上以s[i]为基准,先把士兵按s[i]排好。然后,我们先求s[i]大的开始,即规定选人数…...
2023_12蓝桥杯STEMA 考试 Scratch 中级试卷解析
2023蓝桥杯STEMA 考试 Scratch 中级试卷(12 月)解析 由于没有原始文件,这里使用的角色和背景和实际题目会有所差异,已经尽量还原原题,以下代码仅供参考。吐槽一句:蓝桥杯越来越变态了!\(`Δ’)/\(`Δ’)/\(`Δ’)/孩子学习速度永远也赶不上内卷的速度。 一、选择…...
从编程中理解:大脑中的杏仁核
编程和神经科学在某种程度上可以相互借鉴,尤其是在模拟大脑功能时。让我们以Unity游戏引擎中的C#代码为例,结合金庸武侠小说中的人物形象来构建一个类比故事,探讨如何通过编程模拟大脑中杏仁核的作用。 假设在一款名为“脑海江湖”的Unity游戏中,主角张无忌(代指玩家角色…...
Maven dependency中的scope
Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile。 scope的分类 compile(默认) 含义: compile 是默认值,如果没有指定 scope 值,该元素…...
代码随想录算法训练营DAY11 | 栈与队列 (2)
一、LeetCode 20 有效的括号 题目链接:20.有效的括号https://leetcode.cn/problems/valid-parentheses/ 思路:遇到左括号直接进栈;遇到右括号判断站顶是否有匹配的括号,没有就返回flase,有就将栈顶元素出栈࿱…...
【Spring实战】33 Spring Boot3 集成 Nacos 配置中心
文章目录 1. 配置中心定义2. 解决哪些问题3. 常用的配置中心4. 使用示例1)没引入 Nacos 配置中心2)引入依赖3)配置Nacos连接信息4)在 Nacos 上配置属性5)在 Spring Boot 中使用配置6)启动服务&验证7&am…...
ElementUI安装与使用指南
Element官网-安装指南 提醒一下:下面实例讲解是在Mac系统演示的; 一、开发环境配置 电脑需要先安装好node.js和vue2或者vue3 安装Node.js Node.js 中文网 安装node.js命令:brew install node node.js安装完后,输入࿱…...
Opencv——图片卷积
图像滤波是尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。 线性滤波是图像处理最基本的方法,它允许我们对图像进行处理,产生很多不同的效果。首先,我们需要一个二…...
Simufact.Forming工艺链仿真实战:从冷成型到热处理的完整流程配置技巧
Simufact.Forming工艺链仿真实战:从冷成型到热处理的完整流程配置技巧 在高端制造领域,工艺链仿真是确保产品质量和生产效率的关键环节。Simufact.Forming作为业界领先的金属成型仿真解决方案,其工艺链功能能够无缝衔接从冷成型到热处理的完整…...
BUCK变换器断续模式实战:从公式推导到MATLAB仿真验证(附代码)
BUCK变换器断续模式实战:从公式推导到MATLAB仿真验证(附代码) 在电力电子领域,BUCK变换器作为最基础的降压型拓扑结构,其工作模式的理解直接影响着电源设计的可靠性。许多初学者往往对断续模式(DCM)的特性感到困惑——…...
Direct Memory内存泄漏排查指南:从JVM参数到Cleaner机制详解
Direct Memory内存泄漏排查指南:从JVM参数到Cleaner机制详解 在Java应用的高性能场景中,Direct Memory(直接内存)因其能够绕过JVM堆内存直接与系统交互的特性,成为提升I/O效率的利器。但这份"利器"往往也是把…...
【仅限头部AI团队内部流通】Python智能内存策略白皮书V3.2:基于LLM驱动的动态内存预测模型实测报告
第一章:Python智能体内存管理策略安全性最佳方案概览Python智能体在高并发、长周期运行场景下面临内存泄漏、引用循环、敏感数据残留等安全风险。其内存管理机制虽以引用计数为主、辅以分代垃圾回收(GC),但默认行为不足以保障智能…...
SCH1633-D01 |Murata村田|汽车级|±300度的角速率六轴陀螺仪|惯性导航
SCH1633-D01 |Murata村田|汽车级|300度的角速率六轴陀螺仪|惯性导航用于汽车应用的六自由度XYZ轴陀螺仪和XYZ轴加速度计,带数字SPI接口SCH1633-D01SCH1600传感器系列通过冗余设计选项和内置可调双输出通道为资深客户提供更大的灵活性。●300/s的角速率测量范围●8g的…...
9.7%年复合增长率!内容安全审查平台未来六年发展路径清晰,市场潜力凸显
在数字内容呈指数级增长、全球网络监管政策趋严的背景下,内容安全审查平台作为保障数字空间合规性的核心工具,正经历从“规则驱动”向“AI智能驱动”的范式转型。据恒州诚思调研统计,2025年全球市场规模达179.3亿元,预计至2032年将…...
如何在Windows上轻松安装安卓应用?APK-Installer完整指南
如何在Windows上轻松安装安卓应用?APK-Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用,又…...
基于QT(C++)+Oracle实现的(界面)教务管理系统
一、选题背景 教务管理系统是基本每个高校都有的一个系统,教务系统管理系统充分利用互联网络B/S管理系统模式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务,用一个账号解决学校教务教学管理&…...
【工业级Python内存治理白皮书】:覆盖CPython 3.8–3.12的7层内存管控架构,含可落地的监控-预警-自愈SOP手册
第一章:Python 智能体内存管理策略 性能调优指南Python 的内存管理并非完全由开发者显式控制,而是依托于引用计数、循环垃圾回收器(GC)与内存池(pymalloc)三层协同机制。理解其内在逻辑是实现高性能智能体&…...
从‘电池’到‘胡萝卜’:聊聊构建YOLO生活垃圾数据集时遇到的坑与收获
从‘电池’到‘胡萝卜’:构建YOLO生活垃圾数据集的实战思考 去年夏天,我在自家小区做垃圾分类志愿者时,发现一个有趣现象:居民们对"1号电池属于有害垃圾"这类规则记得很牢,但面对"半个胡萝卜该扔哪个桶…...
