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 事务的隔离级别
事务隔离级别的主要目的是解决数据库并发访问时可能出现的以下问题:
-
脏读(Dirty Read): 一个事务读取了另一个事务尚未提交的数据,如果另一个事务回滚,则读取到的数据实际上是无效的,这种现象就被称为脏读。
-
不可重复读(Non-repeatable Read): 在同一个事务内,由于其他事务对同一行数据进行了修改(更新或删除),导致在多次读取该行数据时,得到的结果不一致。这意味着同一个事务内的两次读取操作得到了不同的数据值。重点在于其他事务的更新(update)和删除(delete)。
-
幻读(Phantom Read): 在同一个事务内,由于其他事务对数据进行了插入(insert)或删除(delete)操作,导致多次查询时得到的结果集不一致。幻读主要发生在范围查询中,即同一个事务内的两次查询得到了不同数量的结果行。重点在于其他事务的插入(insert)和删除(delete)。
为解决以上问题可以通过设置不同的事务隔离级别,可以控制这些问题的发生概率。MySQL支持以下四种事务隔离级别:
-
读未提交(Read uncommitted): 最低级别的隔离,允许一个事务读取另一个事务尚未提交的数据。这可能导致脏读、不可重复读和幻读问题。
-
读已提交(Read Committed): 允许一个事务读取另一个事务已提交的数据,解决了脏读问题。但是仍可能出现不可重复读和幻读问题。
-
可重复读(Repeatable Read): 这是MySQL InnoDB引擎的默认隔离级别,保证在一个事务内多次读取同一数据时,结果始终一致。解决了脏读和不可重复读问题。但是仍可能出现幻读问题。
-
串行化(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钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程ÿ…...
编程流程图
对于复杂流程,我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下: processOn: 这个是我之前 一直的选择,他可以画上面的这些,流程图,网页操作,但是他不是免费的,查过…...
2024年1月29日-2月4日(全面进行+收集虚幻商城免费资源)
从上周发现,一轮轮推就行,每轮多个时间片,每个时间片一门。周一到周五一轮,周六日多轮(比如上下午各一轮)。 周一: 7:09–9:20卫星导航定位(p3)&a…...
【python接口自动化】- 正则用例参数化
🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 …...
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 ...二: 也可以通过给这个命令加上环境变量名参数࿰…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
