当前位置: 首页 > news >正文

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)&#xf…...

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&#xff0c;k1&#xff0c;k2&#xff0c;...&#xff0c;k(n-1)} &#xff0c;把它的所有元素按完全二叉树的形式存储在一个一维数组中&#xff0c;并满足&#xff1a;K(i)<2*i1且K(i)<2*i2&#xff08;K(i)>2*i1且K(i)>2*i2&a…...

HarmonyOS NEXT网络状态监听HTTP和RCP请求网络

当我们在HarmonyOS NEXT中开发的应用&#xff0c;基本上都会使用网络请求&#xff0c;从服务端获取数据在客户端显示或者供用户交互&#xff0c;有时候网络发生变化时&#xff0c;我们需要做一些相应的操作&#xff0c;接下来我们一起来了解下在HarmonyOS NEXT下如何监听网络状…...

MySQL数据库(4)—— 数据类型

目录 一&#xff0c;数据类型分类 二&#xff0c;数值类型 2.1 tinyint类型 2.2 bit类型 2.3 float类型 2.4 decimal类型 三&#xff0c;字符串类型 3.1 char类型 3.2 varchar类型 四&#xff0c;时间日期类型 五&#xff0c;enum和set类型 5.1 基本使用 5.2 解释查…...

如何在Odoo 18中创建记录规则Rule

如何在Odoo 18中创建记录规则Rule 记录规则是管理访问控制的关键&#xff0c;它能让你依据用户角色&#xff0c;定义谁可以在系统内查看、创建或修改特定记录。例如&#xff0c;公司中的普通员工只能查看或修改与与自己直接相关的数据&#xff0c;而经理则有权限访问和编辑所有…...

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

一、死锁&#xff0c;饥饿&#xff0c;死循环 死锁&#xff1a;各进程互相等待对方手里的资源&#xff0c;导致各进程都阻塞&#xff0c;无法向前推进的现象 饥饿&#xff1a;由于长期得不到想要的资源&#xff0c;某进程无法向前推进的现象&#xff0c;例如&#xff1a;短进…...

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本&#xff1a; 2. springboot项目搭建 可以集成在自己的项目里&#xff0c;也可以到 spring.io 生成一个项目 生成的话&#xff0c;如下…...

解析DrugBank数据库数据|Python

一、DrugBank 数据库简介 DrugBank 是一个综合性的生物信息学和化学信息学数据库&#xff0c;专门收录药物和靶点的详细信息。它由加拿大阿尔伯塔大学的 Wishart 研究组 维护&#xff0c;提供化学、药理学、相互作用、代谢、靶点等多方面的药物数据。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)——轮廓工具和多边形工具

一、轮廓工具 &#xff08;1&#xff09;核心功能 轮廓生成&#xff1a;给鼠标起点和终点的连线以及两点经过的路径形成的轮廓&#xff0c;可单独指定轮廓颜色。 &#xff08;2&#xff09; 使用方法 选择工具后&#xff0c;鼠标左键点击&#xff0c;按住不松手&#xff0c;拖动…...

macos sequoia 禁用 ctrl+enter 打开鼠标右键菜单功能

macos sequoia默认ctrlenter会打开鼠标右键菜单&#xff0c;使得很多软件有冲突。关闭方法&#xff1a; end...

分布式架构与XXL-JOB

目录 先了解什么是任务调度&#xff1f; 什么是分布式任务调度&#xff1f; 了解XXL-JOB分布式任务调度平台 如何搭建XXL-JOB&#xff1f; 分片广播 作业分片方案 最近学习在项目的媒资管理模块如何高效处理大量视频&#xff0c;上传单个视频可能涉及到转码&#xff0c…...

leetcode day18 移除元素 26+283

26 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…...

【HarmonyOS Next】鸿蒙监听手机按键

【HarmonyOS Next】鸿蒙监听手机按键 一、前言 应用开发中我们会遇到监听用户实体按键&#xff0c;或者扩展按键的需求。亦或者是在某些场景下&#xff0c;禁止用户按下某些按键的业务需求。 这两种需求&#xff0c;鸿蒙都提供了对应的监听事件进行处理。 onKeyEvent 默认的…...

用Deepseek查询快证API-物流查询-实名认证-企业实名认证

快证API可能是一个提供多种验证和查询服务的平台&#xff0c;包括但不限于企业实名认证、短链接生成、手机号归属地查询、IP地址查询等。以下是根据搜索结果整理的关于快证API的相关信息&#xff1a; ‌企业实名认证API‌&#xff1a; 功能&#xff1a;通过与企业相关数据库进行…...

一个简洁高效的Flask用户管理示例

Flask-Login 是 Flask 的用户管理扩展&#xff0c;提供 用户身份验证、会话管理、权限控制 等功能。 适用于&#xff1a; • 用户登录、登出 • 记住用户&#xff08;“记住我” 功能&#xff09; • 限制未登录用户访问某些页面 • 用户会话管理 1. 安装 Flask-Login pi…...

MySQL数据库突然变成只读了?别慌,5分钟教你用SET GLOBAL read_only=0搞定

MySQL数据库突然变成只读了&#xff1f;5分钟紧急恢复写入权限指南 问题现象与紧急判断 凌晨三点&#xff0c;你正熬夜赶一个紧急版本上线&#xff0c;突然发现应用日志里爆出一连串刺眼的错误&#xff1a;"The MySQL server is running with the --read-only option so i…...

QT 5.15在Windows上死活装不上?别急,试试这个被忽略的‘Archive’按钮(附清华源加速)

QT 5.15安装难题破解&#xff1a;揭秘Windows下被隐藏的版本入口 最近在Windows上安装QT 5.15时&#xff0c;不少开发者遇到了一个令人抓狂的问题——明明官方文档写着支持这个版本&#xff0c;但在线安装器里却怎么也找不到。这就像去餐厅点菜&#xff0c;菜单上明明有你想要的…...

自媒体灵感来了记不住?我用这个方法攒了500个选题

做自媒体两年&#xff0c;我最怕的不是写稿&#xff0c;而是“灵感来了没抓住”。等红灯时想到一个好选题&#xff0c;觉得“这个肯定能火”&#xff0c;到家就忘了。刷到一篇爆款&#xff0c;心想“要学一下结构”&#xff0c;第二天再看&#xff0c;链接都找不到了。后来我意…...

智能制造系统推广的核心的十个关键问题

推广智能制造系统&#xff08;尤其是迈向资产共生阶段&#xff09;时&#xff0c;不能只关注设备买入&#xff0c;急须解决以下十个关乎“成败”的核心问题&#xff1a;数据孤岛与协议兼容问题&#xff1a;底层设备品牌庞杂&#xff08;Fanuc, Siemens, Omron 等&#xff09;&a…...

AI Agent实战专栏导读:6周掌握智能代理开发(含完整代码)

&#x1f3af; 8篇深度教程 5个完整项目 | 完全免费 | 代码开源可运行 &#x1f4d6; 专栏介绍 欢迎来到 AI Agent实战专栏&#xff01; 这是国内首个系统化的AI Agent实战教程系列&#xff0c;从基础概念到企业级应用&#xff0c;带你全面掌握智能代理开发技术。 ✨ 专栏特…...

从零到上线:用Visual Studio 2022和IIS Manager完整部署.NET 8.0 MVC应用

从零到上线&#xff1a;用Visual Studio 2022和IIS Manager完整部署.NET 8.0 MVC应用 对于刚接触.NET开发的初学者来说&#xff0c;将第一个MVC应用成功部署到生产环境可能是个令人望而生畏的任务。本文将带你走过从项目创建到最终发布的完整旅程&#xff0c;特别针对.NET 8.0和…...

ESP32C3 + PCM5102A 打造低成本网络音频终端:从I2S配置到Arduino流媒体播放

ESP32C3 PCM5102A 打造低成本网络音频终端&#xff1a;从I2S配置到Arduino流媒体播放 在物联网音频应用领域&#xff0c;低成本高性能的解决方案一直是开发者追求的目标。ESP32C3作为乐鑫推出的RISC-V架构Wi-Fi/蓝牙双模芯片&#xff0c;搭配PCM5102A这款高性价比立体声DAC芯…...

3步解锁IDM永久试用:开源激活脚本的完整解决方案

3步解锁IDM永久试用&#xff1a;开源激活脚本的完整解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager&#xff08;IDM&#xf…...

LinkSwift:八大网盘直链下载,解锁你的宽带潜能

LinkSwift&#xff1a;八大网盘直链下载&#xff0c;解锁你的宽带潜能 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...

Clawdbot性能调优:提升Qwen3-VL模型响应速度的10个技巧

Clawdbot性能调优&#xff1a;提升Qwen3-VL模型响应速度的10个技巧 1. 引言 如果你正在使用Clawdbot集成Qwen3-VL模型&#xff0c;可能会遇到响应速度不够理想的情况。特别是在处理多模态任务时&#xff0c;模型推理、数据传输和结果返回都需要时间&#xff0c;用户等待时间过…...