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

MySQL事务原理-相关日志

文章目录

  • 前言
  • 一、什么是事务?
    • 1.1 事务概念
    • 1.2 事务的四大特性
    • 1.3 事务的隔离级别
  • 二、实现原理
    • 2.1 TODO
    • 2.2 TODO

前言

事务是由MySQL的引擎来实现的,通过show engines命令查看MySQL存储引擎类别,观察只有InnoDB存储引擎支持事务。

在这里插入图片描述

一、什么是事务?

1.1 事务概念

事务(Transaction)是一系列的数据库操作,这些操作要么全部成功执行,要么全部回滚(即全部失败,回到操作前的状态),这样确保数据库的数据在并发访问的情况下保持一致性和完整性。

1.2 事务的四大特性

一个完整的事务必须具备四个条件,这四个条件我们称为ACID,ACID特性确保了一个完整的事务在数据库中的正确执行和数据的一致性。ACID这四个字母,每个字母代表了一个特性。

原子性(Atomicity): 事务(transaction)被视为一个不可分割的单元,要么全部执行成功,要么全部不执行。如果在事务的执行过程中发生错误,那么事务会被回滚到开始前的状态,保持数据的一致性。

一致性(Consistency): 事务在执行前和执行后,数据库的数据应该处于一致的状态。这意味着事务在执行时,必须遵守一些预定的规则或约束,以保持数据的正确性。

隔离性(Isolation): 事务之间是相互隔离的,一个事务的执行不会被其他事务干扰。这意味着并发执行的事务不会相互影响,可以保证数据的完整性和正确性。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。

持久性(Durability): 一旦事务成功提交,对数据库的修改将永久保存,即使在系统故障或崩溃后,数据也不会丢失。持久性确保数据的持久性存储,保障数据的可靠性。

1.3 事务的隔离级别

事务隔离级别的主要目的是解决数据库并发访问时可能出现的以下问题:

  1. 脏读(Dirty Read): 一个事务读取了另一个事务尚未提交的数据,如果另一个事务回滚,则读取到的数据实际上是无效的,这种现象就被称为脏读。

  2. 不可重复读(Non-repeatable Read): 在同一个事务内,由于其他事务对同一行数据进行了修改(更新或删除),导致在多次读取该行数据时,得到的结果不一致。这意味着同一个事务内的两次读取操作得到了不同的数据值。重点在于其他事务的更新(update)和删除(delete)。

  3. 幻读(Phantom Read): 在同一个事务内,由于其他事务对数据进行了插入(insert)或删除(delete)操作,导致多次查询时得到的结果集不一致。幻读主要发生在范围查询中,即同一个事务内的两次查询得到了不同数量的结果行。重点在于其他事务的插入(insert)和删除(delete)。

为解决以上问题可以通过设置不同的事务隔离级别,可以控制这些问题的发生概率。MySQL支持以下四种事务隔离级别:

  1. 读未提交(Read uncommitted): 最低级别的隔离,允许一个事务读取另一个事务尚未提交的数据。这可能导致脏读、不可重复读和幻读问题。

  2. 读已提交(Read Committed): 允许一个事务读取另一个事务已提交的数据,解决了脏读问题。但是仍可能出现不可重复读和幻读问题。

  3. 可重复读(Repeatable Read): 这是MySQL InnoDB引擎的默认隔离级别,保证在一个事务内多次读取同一数据时,结果始终一致。解决了脏读和不可重复读问题。但是仍可能出现幻读问题。

  4. 串行化(Serializable): 最高级别的隔离,确保同时只有一个事务能够访问数据,解决了脏读、不可重复读和幻读问题。但是串行化会导致并发性能大幅下降,因为多个事务无法同时访问数据。

隔离级别以及可能产生的读现象:

隔离级别脏读不可重复读幻读
串行化不会发生不会发生不会发生
可重复读不会发生不会发生可能发生
读已提交不会发生可能发生可能发生
读未提交可能发生可能发生可能发生

应结合实际的业务需求,可以选择适合的隔离级别来处理数据并发操作。隔离级别越高,性能可能越差,因为它需要锁定更多的资源以保证数据的一致性。因此,在设计事务时,需要综合考虑业务的要求和性能的影响。

二、实现原理

2.1 TODO

2.2 TODO

相关文章:

MySQL事务原理-相关日志

文章目录 前言一、什么是事务?1.1 事务概念1.2 事务的四大特性1.3 事务的隔离级别 二、实现原理2.1 TODO2.2 TODO 前言 事务是由MySQL的引擎来实现的,通过show engines命令查看MySQL存储引擎类别,观察只有InnoDB存储引擎支持事务。 一、什么…...

内核Oops的几种定位方法

反汇编 报错信息 [ 1.826455] ------------[ cut here ]------------ [ 1.831091] Kernel BUG at c011fef0 [verbose debug info unavailable] [ 1.837344] Internal error: Oops - BUG: 0 [#1] PREEMPT THUMB2 [ 1.843108] Modules linked in: [ 1.846158] C…...

外包干了10个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...

2024美赛C完整思路

首先,题目明确表示可以自行选择额外的玩家信息或其他数据。因此最好找一些其他选手的数据以扩大数据集,与其他选题人作出数据集上的区分。大数据集可以帮助后续的建模实验更准确。 第一问本质就是开发一个评价模型,主要针对运动员得分的时刻…...

Backtrader 文档学习- Broker - Cheat-On-Open

Backtrader 文档学习- Broker - Cheat-On-Open 1.概述 V1.9.44.116增加了Cheat On Open的支持。对于全押的人来说,这似乎是一个必需的功能,用bar的收盘价后进行计算,希望与开盘价相匹配。 当开盘价差距(上涨或下跌,取…...

基于微信浙江杭州某停车场车位预约小程序系统设计与实现 研究背景和意义、国内外现状

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

编程流程图

对于复杂流程,我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下: processOn: 这个是我之前 一直的选择,他可以画上面的这些,流程图,网页操作,但是他不是免费的,查过…...

2024年1月29日-2月4日(全面进行+收集虚幻商城免费资源)

从上周发现,一轮轮推就行,每轮多个时间片,每个时间片一门。周一到周五一轮,周六日多轮(比如上下午各一轮)。 周一: 7:09–9:20卫星导航定位(p3)&a…...

【python接口自动化】- 正则用例参数化

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…...

Java中的四种线程池详解及使用场景

前言 在Java并发编程中,JDK提供了一套强大的线程池工具类java.util.concurrent.ThreadPoolExecutor以及它的四个便捷工厂方法,这四种线程池分别对应不同的使用场景和特性。下面将详细介绍每种线程池的创建方式、工作原理以及适用场景。 1. CachedThrea…...

Google Chrome 常用的几个参数

1 右键--Google Chrome--属性--目标 参数作用--disable-infobars此计算机将不会再收到 Google Chrome 更新,因为 Windows XP 和 Windows Vista 不再受支持。适用于 xp、2003 的 49.x.x.x 版本。示例1--ingore-certificate-errors忽略证书错误--disable-background-…...

Keil软件某些汉字输出乱码,0xFD问题,51单片机

1. 问题 keil软件输入某些汉字的时候会输出乱码,例如:升、 数 2. 原因 keil软件会忽略0xFD。 升的GB2312编码为 0xc9fd,keil解析为0xc9数的GB2312编码为 0xcafd,keil解析为0xca 关于Keil软件中0xFD问题的说明 3. 解决方案1 …...

自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人

如今,大模型层出不穷,这为自然语言处理、计算机视觉、语音识别和其他领域的人工智能任务带来了重大的突破和进展。大模型通常指那些参数量庞大、层数深、拥有巨大的计算能力和数据训练集的模型。 但不能不承认的是,普通人使用大模型还是有一…...

Android中 Gradle与 AGP 版本对应关系表

Android Gradle Plugin Version版本Gradle Version版本1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2.132.0.0 - 2.1.22.10 - 2.132.1.3 - 2.2.32.14.12.3.03.33.0.04.13.1.04.43.2.0 - 3.2.14.63.3.0 - 3.3.34.10.13.4.0 - 3.4.35.1.13.5.0 - 3.5.45.4.13.…...

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识,同学们也可以通过公众号菜单栏查看! 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…...

跟着pink老师前端入门教程-day13

品优购案例 一、品优购项目规划 1. 品优购项目整体介绍 项目名称:品优购 项目描述:品优购是一个电商网站,我们要完成 PC 端首页、列表页、注册页面的制作 2. 品优购项目学习目的 1. 电商类网站比较综合,里面需要大量的布…...

go语言基础之泛型

1.泛型 泛型是一种独立于所使用的特定类型的编写代码的方法。使用泛型可以编写出适用于一组类型中的任何一种的函数和类型。 1.1 为什么需要泛型 func reverse(s []int) []int {l : len(s)r : make([]int, l)for i, e : range s {r[l-i-1] e}return r }fmt.Println(reverse…...

Vue.js 中子组件向父组件传值的方法

Vue.js 是一款流行的 JavaScript 前端框架,它提供了一套完整的工具和 API,使得开发者可以更加高效地构建交互式的 Web 应用程序。其中,组件化是 Vue.js 的一个核心概念,通过组件化可以将一个复杂的应用程序拆分成多个独立的部分&a…...

数据可视化 pycharts实现地理数据可视化(全球地图)

自用版 紧急整理一点可能要用的可视化代码,略粗糙 以后有机会再改 requirements: python3.6及以上pycharts1.9 数据格式为: 运行结果为: import pandas as pd from pyecharts.charts import Map, Timeline from pyecharts im…...

Mac下查看、配置和使用环境变量

Mac下查看、配置和使用环境变量 一:Mac怎么查看环境变量命令 printenv一:这个命令会一次性列出所有环境变量的键值对,输出格式为: VAR1value1 VAR2value2 ...二: 也可以通过给这个命令加上环境变量名参数&#xff0…...

stm32开发新手福音:告别复杂安装,用快马ai生成带详解的hal库基础代码

作为一名刚接触STM32开发的新手,我最近在尝试用HAL库控制GPIO时遇到了不少麻烦。从下载安装STM32CubeMX到配置工程,每一步都让我这个小白手忙脚乱。直到发现了InsCode(快马)平台,整个过程变得简单多了——不需要自己搭建环境,AI就…...

Synchronized 与 ReentrantLock 深度对比

前言 在Java并发编程中,锁机制是保证线程安全的核心手段。synchronized 和 ReentrantLock 是两种最常用的锁实现,面试中经常被要求对比它们的区别。 本文将深入分析两者的底层原理、功能特性、性能差异以及各自的适用场景。 一、快速概览 维度synchro…...

java打卡学习3:ArrayList扩容机制

ArrayList扩容机制概述ArrayList是基于动态数组实现的集合类,当元素数量超过当前数组容量时,会自动触发扩容机制。其核心目的是平衡内存占用与性能开销。默认初始容量未指定初始容量时,默认创建一个空数组(JDK 1.8)&am…...

Midjourney 图像到图像转换:真实人物与动漫的一致性与多样场景选择

Midjourney 拥有强大的图像到图像转换能力。本文将手把手教你如何在我们的 AceDataCloud 网站 上将照片切换到任何动漫场景,同时保持角色的一致性。 通过以下步骤,我们可以轻松实现角色一致性。 接下来,我们看一下效果,原始图像如…...

如何使用Compiler Explorer实时编译原理:揭秘代码到汇编的转换过程

如何使用Compiler Explorer实时编译原理:揭秘代码到汇编的转换过程 【免费下载链接】compiler-explorer Run compilers interactively from your web browser and interact with the assembly 项目地址: https://gitcode.com/gh_mirrors/co/compiler-explorer …...

从 POST 到落库回写:彻底讲透 SAP Gateway 中 Create Operation 的实现

在经典的 SAP Gateway 开发里,Create Operation 看上去只是一次新增动作,真正落到运行时,却牵涉到一条非常完整的链路:客户端发起 HTTP POST 请求,请求体里的 OData 数据被 Gateway 运行时反序列化成 ABAP 结构,开发者在对应的 <Entity Set>_CREATE_ENTITY 方法里接…...

League-Toolkit:英雄联盟智能辅助工具的效率提升之道

League-Toolkit&#xff1a;英雄联盟智能辅助工具的效率提升之道 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是…...

从音乐均衡器到语音降噪:深入浅出玩转数字谐振器设计与MATLAB仿真

从音乐均衡器到语音降噪&#xff1a;深入浅出玩转数字谐振器设计与MATLAB仿真 你是否曾在调整音乐播放器的均衡器时好奇——那些滑动条如何精确控制特定频段的声音强弱&#xff1f;这背后隐藏的数字信号处理魔法&#xff0c;正是我们今天要探索的数字谐振器技术。无论是提取语音…...

网络协议与文件系统,小车亮灯实验

网络协议与文件系统 一、项目背景二、项目核心目标与环境二者协同工作流程 四、Linux文件系统与设备操作实战五、完整Python代码实现配置项&#xff08;根据自身硬件调整&#xff09;安全退出函数&#xff1a;捕获CtrlC&#xff0c;关闭LED后退出注册CtrlC信号&#xff0c;绑定…...

3大核心功能让你的英雄联盟体验提升300%:League-Toolkit完全指南

3大核心功能让你的英雄联盟体验提升300%&#xff1a;League-Toolkit完全指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 引言…...