MySQL事务的特性和隔离级别
一、事务的特性
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作,即这些操作要么同时成功,要么同时失败
事务的有以下四个特性(acid):
原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
A给B转钱:A减钱,B加钱的操作要么一起成功,要么一起失败
一致性(Consistency):事务完成时,必须是所有的数据保持逻辑上的一致。
A给B转钱:A少了多少钱,B多了多少钱,在客观世界要逻辑一致
隔离性(Isolation):数据库提供隔离机制,保证事务在操作数据库时,不收外部并发操作影响
A给B转钱:不受其他转钱操作,或者其他各种操作的影响
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
A给B转钱:只要转成功了(提交了),A就永久的扣钱了,B就永久的加了钱,不会变回去
二、并发事务的问题

解决方案:

注意:事务隔离级别越高,数据越安全,但是性能越低
三、MySQL的undo log和 redo log
undo log和redo log都是MySQL的日志,那它们有什么区别呢?
1、redo log
首先我们先了解两个概念:
缓冲池(buffer poll):主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),以一定的频率刷新到磁盘,从而减少磁盘IO,加快处理速度
数据页(page):是InnerDB存储引擎磁盘管理的最小单元,每个页大小默认为16kb。页中存储的是行数据

redo log:重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性的。
如果数据从缓冲池,写入MySQL磁盘之前宕机(或出现别的异常)就可以从redo log中恢复数据
redo log由两部分组成:重做日志缓存(redo log buffer,在内存中)以及重做日志文件(redo log file 在磁盘中)。当事务提交后,会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误时,进行数据恢复使用。
2、undo log
undo log:回滚日志,用于记录数据被修改前的信息,作用包含两个:提供回滚 和 MVCC(多版本并发控制)。undo log和redo log记录物理日志不一样,它是逻辑日志
可以认为当delete一条记录时,undo log还会保存一条对应的insert记录,反之亦然。
当update一条记录时,它记录一条对应相反的update记录。当执行rollback的时候,就可以从undo log中的逻辑记录读取到相应的内容进行回滚
undo log可以实现事务的一致性和原子性。
相关文章:
MySQL事务的特性和隔离级别
一、事务的特性 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作,即这些操作要么同时成功,要么同时失败 事务的有以下四个特性(acid)…...
Oracle视图(基本使用)
视图 视图是通过定制的方式显示一个或者多个表的数据。 视图可以视为“虚拟表”或“存储的查询”。 视图的优点: 提供了另外一种级别的表安全性隐藏了数据的复杂性简化了用户的SQL命令隔离基表结构的改变通过重命名列,从另一个角度提供数据。 视图里…...
C++ Primer 类的作用域
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(上)
【学习笔记】Cadence电子设计全流程(二)原理图库的创建与设计(上) 2.1 OrCAD X Capture 界面预览2.2 原理图元件符号的组成2.3 原理图库的创建和元件的创建2.4 以 STM32F103T8U6 芯片为例创建元件 全部内容见专栏:【Ca…...
学习数据结构(11)二叉树(堆)下
1.堆的概念 如果有⼀个集合 K {k0,k1,k2,...,k(n-1)} ,把它的所有元素按完全二叉树的形式存储在一个一维数组中,并满足:K(i)<2*i1且K(i)<2*i2(K(i)>2*i1且K(i)>2*i2&a…...
HarmonyOS NEXT网络状态监听HTTP和RCP请求网络
当我们在HarmonyOS NEXT中开发的应用,基本上都会使用网络请求,从服务端获取数据在客户端显示或者供用户交互,有时候网络发生变化时,我们需要做一些相应的操作,接下来我们一起来了解下在HarmonyOS NEXT下如何监听网络状…...
MySQL数据库(4)—— 数据类型
目录 一,数据类型分类 二,数值类型 2.1 tinyint类型 2.2 bit类型 2.3 float类型 2.4 decimal类型 三,字符串类型 3.1 char类型 3.2 varchar类型 四,时间日期类型 五,enum和set类型 5.1 基本使用 5.2 解释查…...
如何在Odoo 18中创建记录规则Rule
如何在Odoo 18中创建记录规则Rule 记录规则是管理访问控制的关键,它能让你依据用户角色,定义谁可以在系统内查看、创建或修改特定记录。例如,公司中的普通员工只能查看或修改与与自己直接相关的数据,而经理则有权限访问和编辑所有…...
petalinux高版本设置自动登录和开机自启动配置
petalinux-config -c rootfs 依次选择 Image Features -> serial-autologin-root 这是配置 进来就是root权限 创建并安装名为 myapp-init 的新建应用程序 petalinux-create -t apps --template install -n myapp-init --enable 编辑 project-spec/meta-user/recipes-…...
操作系统2.4
一、死锁,饥饿,死循环 死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象 饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象,例如:短进…...
Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例
1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…...
解析DrugBank数据库数据|Python
一、DrugBank 数据库简介 DrugBank 是一个综合性的生物信息学和化学信息学数据库,专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护,提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。DrugBank 结合了实验数据和…...
CUDA Toolkit 历史版本 cuda安装
cuda安装 CUDA Toolkit 版本选择1. NVIDIA-SMI 525.60.11静默安装2. CUDA Toolkit 12.6.0 安装禁用 nouveau依赖安装下载安装 cuda显卡驱动安装成功设置环境变量 3. 安装失败切换到多用户文本模式 参考 CUDA Toolkit 版本选择 CUDA Toolkit 历史版本 1. NVIDIA-SMI 525.60.11 …...
Aseprite详细使用教程(12)——轮廓工具和多边形工具
一、轮廓工具 (1)核心功能 轮廓生成:给鼠标起点和终点的连线以及两点经过的路径形成的轮廓,可单独指定轮廓颜色。 (2) 使用方法 选择工具后,鼠标左键点击,按住不松手,拖动…...
macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能
macos sequoia默认ctrlenter会打开鼠标右键菜单,使得很多软件有冲突。关闭方法: end...
分布式架构与XXL-JOB
目录 先了解什么是任务调度? 什么是分布式任务调度? 了解XXL-JOB分布式任务调度平台 如何搭建XXL-JOB? 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频,上传单个视频可能涉及到转码,…...
leetcode day18 移除元素 26+283
26 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...
【HarmonyOS Next】鸿蒙监听手机按键
【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键,或者扩展按键的需求。亦或者是在某些场景下,禁止用户按下某些按键的业务需求。 这两种需求,鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…...
用Deepseek查询快证API-物流查询-实名认证-企业实名认证
快证API可能是一个提供多种验证和查询服务的平台,包括但不限于企业实名认证、短链接生成、手机号归属地查询、IP地址查询等。以下是根据搜索结果整理的关于快证API的相关信息: 企业实名认证API: 功能:通过与企业相关数据库进行…...
一个简洁高效的Flask用户管理示例
Flask-Login 是 Flask 的用户管理扩展,提供 用户身份验证、会话管理、权限控制 等功能。 适用于: • 用户登录、登出 • 记住用户(“记住我” 功能) • 限制未登录用户访问某些页面 • 用户会话管理 1. 安装 Flask-Login pi…...
MySQL数据库突然变成只读了?别慌,5分钟教你用SET GLOBAL read_only=0搞定
MySQL数据库突然变成只读了?5分钟紧急恢复写入权限指南 问题现象与紧急判断 凌晨三点,你正熬夜赶一个紧急版本上线,突然发现应用日志里爆出一连串刺眼的错误:"The MySQL server is running with the --read-only option so i…...
QT 5.15在Windows上死活装不上?别急,试试这个被忽略的‘Archive’按钮(附清华源加速)
QT 5.15安装难题破解:揭秘Windows下被隐藏的版本入口 最近在Windows上安装QT 5.15时,不少开发者遇到了一个令人抓狂的问题——明明官方文档写着支持这个版本,但在线安装器里却怎么也找不到。这就像去餐厅点菜,菜单上明明有你想要的…...
自媒体灵感来了记不住?我用这个方法攒了500个选题
做自媒体两年,我最怕的不是写稿,而是“灵感来了没抓住”。等红灯时想到一个好选题,觉得“这个肯定能火”,到家就忘了。刷到一篇爆款,心想“要学一下结构”,第二天再看,链接都找不到了。后来我意…...
智能制造系统推广的核心的十个关键问题
推广智能制造系统(尤其是迈向资产共生阶段)时,不能只关注设备买入,急须解决以下十个关乎“成败”的核心问题:数据孤岛与协议兼容问题:底层设备品牌庞杂(Fanuc, Siemens, Omron 等)&a…...
AI Agent实战专栏导读:6周掌握智能代理开发(含完整代码)
🎯 8篇深度教程 5个完整项目 | 完全免费 | 代码开源可运行 📖 专栏介绍 欢迎来到 AI Agent实战专栏! 这是国内首个系统化的AI Agent实战教程系列,从基础概念到企业级应用,带你全面掌握智能代理开发技术。 ✨ 专栏特…...
从零到上线:用Visual Studio 2022和IIS Manager完整部署.NET 8.0 MVC应用
从零到上线:用Visual Studio 2022和IIS Manager完整部署.NET 8.0 MVC应用 对于刚接触.NET开发的初学者来说,将第一个MVC应用成功部署到生产环境可能是个令人望而生畏的任务。本文将带你走过从项目创建到最终发布的完整旅程,特别针对.NET 8.0和…...
ESP32C3 + PCM5102A 打造低成本网络音频终端:从I2S配置到Arduino流媒体播放
ESP32C3 PCM5102A 打造低成本网络音频终端:从I2S配置到Arduino流媒体播放 在物联网音频应用领域,低成本高性能的解决方案一直是开发者追求的目标。ESP32C3作为乐鑫推出的RISC-V架构Wi-Fi/蓝牙双模芯片,搭配PCM5102A这款高性价比立体声DAC芯…...
3步解锁IDM永久试用:开源激活脚本的完整解决方案
3步解锁IDM永久试用:开源激活脚本的完整解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager(IDM…...
LinkSwift:八大网盘直链下载,解锁你的宽带潜能
LinkSwift:八大网盘直链下载,解锁你的宽带潜能 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...
Clawdbot性能调优:提升Qwen3-VL模型响应速度的10个技巧
Clawdbot性能调优:提升Qwen3-VL模型响应速度的10个技巧 1. 引言 如果你正在使用Clawdbot集成Qwen3-VL模型,可能会遇到响应速度不够理想的情况。特别是在处理多模态任务时,模型推理、数据传输和结果返回都需要时间,用户等待时间过…...
