网站建设入账哪个科目湛江人才网

news/2025/9/28 18:13:34/文章来源:
网站建设入账哪个科目,湛江人才网,网页如何制作,网站运营专员主要做什么事务原理 1 事务基础 1). 事务 事务 是一组操作的集合#xff0c;它是一个不可分割的工作单位#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求#xff0c;即这些操作要么同时成功#xff0c;要么同时失败。 2). 特性 原子性#xff08;Atomi…事务原理 1 事务基础 1). 事务 事务 是一组操作的集合它是一个不可分割的工作单位事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求即这些操作要么同时成功要么同时失败。 2). 特性 原子性Atomicity事务是不可分割的最小操作单元要么全部成功要么全部失败。 一致性Consistency事务完成时必须使所有的数据都保持一致状态。 隔离性Isolation数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环 境下运行。 持久性Durability事务一旦提交或回滚它对数据库中的数据的改变就是永久的。 那实际上我们研究事务的原理就是研究MySQL的InnoDB引擎是如何保证事务的这四大特性的。 而对于这四大特性实际上分为两个部分。 其中的原子性、一致性、持久化实际上是由InnoDB中的 两份日志来保证的一份是redo log日志一份是undo log日志。 而隔离性是通过数据库的锁 加上MVCC来保证的。 我们在讲解事务原理的时候主要就是来研究一下redologundolog以及MVCC。 redo log ​ 重做日志记录的是事务提交时数据页的物理修改是用来实现事务的持久性。 该日志文件由两部分组成 重做日志缓冲redo log buffer以及重做日志文件redo log file,前者是在内存中后者在磁盘中。当事务提交之后会把所有修改信息都存到该日志文件中, 用于在刷新脏页到磁盘,发生错误时, 进行数据恢复使用。 如果没有redolog可能会存在什么问题的 我们一起来分析一下。 我们知道在InnoDB引擎中的内存结构中主要的内存区域就是缓冲池在缓冲池中缓存了很多的数据页。 当我们在一个事务中执行多个增删改的操作时InnoDB引擎会先操作缓冲池中的数据如果缓冲区没有对应的数据会通过后台线程将磁盘中的数据加载出来存放在缓冲区中然后将缓冲池中的数据修改修改后的数据页我们称为----脏页。 而脏页则会在一定的时机通过后台线程刷新到磁盘中从而保证缓冲区与磁盘的数据一致。 而缓冲区的脏页数据并不是实时刷新的而是一段时间之后将缓冲区的数据刷新到磁盘中假如刷新到磁盘的过程出错了而提示给用户事务提交成功而数据却没有持久化下来这就出现问题了没有保证事务的持久性。 那么如何解决上述的问题呢 在InnoDB中提供了一份日志 redo log接下来我们再来分析一 下通过redolog如何解决这个问题。 有了redolog之后当对缓冲区的数据进行增删改之后会首先将操作的数据页的变化记录在redo log buffer中。 在事务提交时会将redo log buffer中的数据刷新到redo log磁盘文件中。 过一段时间之后如果刷新缓冲区的脏页到磁盘时发生错误此时就可以借助于redo log进行数据恢复这样就保证了事务的持久性。 而如果脏页成功刷新到磁盘 或 或者涉及到的数据已经落盘此时redolog就没有作用了就可以删除了所以存在的两个redolog文件是循环写的。 那为什么每一次提交事务要刷新redo log 到磁盘中呢而不是直接将buffer pool中的脏页刷新 到磁盘呢 ? 因为在业务操作中我们操作数据一般都是随机读写磁盘的而不是顺序读写磁盘。 而redo log在 往磁盘文件中写入数据由于是日志文件所以都是顺序写的。顺序写的效率要远大于随机写。 这 种先写日志的方式称之为 WALWrite-Ahead Logging。 undo log 回滚日志用于记录数据被修改前的信息 , 作用包含两个 : 提供回滚(保证事务的原子性)和 MVCC(多版本并发控制) 。 undo log和redo log记录物理日志不一样它是逻辑日志。可以认为当delete一条记录时undo log中会记录一条对应的insert记录反之亦然当update一条记录时它记录一条对应相反的update记录。 当执行rollback时就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。 Undo log销毁undo log在事务执行时产生事务提交时并不会立即删除undo log因为这些 日志可能还用于MVCC。 Undo log存储undo log采用段的方式进行管理和记录存放在前面介绍的 rollback segment 。回滚段中内部包含1024个undo log segment。 MVCC 1 基本概念 1). 当前读 ​ 读取的是记录的最新版本读取时还要保证其他并发事务不能修改当前记录会对读取的记录进行加锁。 对于我们日常的操作如select … lock in share mode(共享锁)select … for update、update、insert、delete(排他锁)都是一种当前读。 测试 ​ 在测试中我们可以看到即使是在默认的RR隔离级别下事务A中依然可以读取到事务B最新提交的内 容因为在事务A第二次的查询语句后面加上了 lock in share mode 共享锁此时是当前读最新版本的数据操作。当然当我们 加排他锁的时候也是当前读操作。 注意如果没有加锁就会符合可重复读2次查询数据一样读取不到事务B提交的内容。 2). 快照读 ​ 简单的select不加锁就是快照读快照读读取的是记录数据的可见版本有可能是历史数据 不加锁是非阻塞读。 • Read Committed每次select都生成一个快照读。 • Repeatable Read开启事务后第一个select语句才是快照读的地方。 • Serializable快照读会退化为当前读。 在测试中,我们看到即使事务B提交了数据,事务A中也查询不到。 原因就是因为普通的select是快照 读而在当前默认的RR隔离级别下开启事务后第一个select语句才是快照读的地方后面执行相同 的select语句都是从快照中获取数据可能不是当前的最新数据这样也就保证了可重复读。 3). MVCC ​ 全称 Multi-Version Concurrency Control多版本并发控制。指维护一个数据的多个版本 使得读写操作没有冲突快照读为MySQL实现MVCC提供了一个非阻塞读功能。 ​ MVCC的具体实现还需 要依赖于数据库记录中的三个隐式字段、undo log日志、readView。 ​ 接下来我们再来介绍一下InnoDB引擎的表中涉及到的隐藏字段 、undolog 以及 readview从 而来介绍一下MVCC的原理。 隐藏字段 1 介绍 当我们创建了上面的这张表我们在查看表结构的时候就可以显式的看到这三个字段。 实际上除了 这三个字段以外InnoDB还会自动的给我们添加三个隐藏字段及其含义分别是 而上述的前两个字段是肯定会添加的 是否添加最后一个字段DB_ROW_ID得看当前表有没有主键 如果有主键则不会添加该隐藏字段。 undolog 1 介绍 ​ 回滚日志在insert、update、delete的时候产生的便于数据回滚的日志。 当insert的时候产生的undo log日志只在回滚时需要在事务提交后可被立即删除。 而update、delete的时候产生的undo log日志不仅在回滚时需要在快照读时也需要不会立即被删除。 2 版本链 有一张表原始数据为 DB_TRX_ID : 代表最近修改事务ID记录插入这条记录或最后一次修改该记录的事务ID是自增的。 DB_ROLL_PTR 由于这条数据是才插入的没有被更新过所以该字段值为null。指向上一个版本 然后有四个并发事务同时在访问这张表。 A. 第一步 当事务2执行第一条修改语句时会记录undo log日志记录数据变更之前的样子; 然后更新记录 并且记录本次操作的事务ID回滚指针回滚指针用来指定如果发生回滚回滚到哪一个版本。 B.第二步 当事务3执行第一条修改语句时也会记录undo log日志记录数据变更之前的样子; 然后更新记 录并且记录本次操作的事务ID回滚指针回滚指针用来指定如果发生回滚回滚到哪一个版本。 C. 第三步 当事务4执行第一条修改语句时也会记录undo log日志记录数据变更之前的样子; 然后更新记 录并且记录本次操作的事务ID回滚指针回滚指针用来指定如果发生回滚回滚到哪一个版本。 最终我们发现不同事务或相同事务对同一条记录进行修改会导致该记录的undolog生成一条 记录版本链表链表的头部是最新的旧记录链表尾部是最早的旧记录。 readview ReadView读视图是 快照读 SQL执行时MVCC提取数据的依据记录并维护系统当前活跃的事务 未提交的id。 ReadView中包含了四个核心字段 而在readview中就规定了版本链数据的访问规则 trx_id 代表当前undolog版本链对应事务ID。 后面会有案例解释这张图 不同的隔离级别生成ReadView的时机不同 READ COMMITTED 在事务中每一次执行快照读时生成ReadView。 REPEATABLE READ仅在事务中第一次执行快照读时生成ReadView后续复用该ReadView。 原理分析 1 RC隔离级别 RC隔离级别下在事务中每一次执行快照读时生成ReadView。 我们就来分析事务5中两次快照读读取数据是如何获取数据的? 在事务5中查询了两次id为30的记录由于隔离级别为Read Committed所以每一次进行快照读 都会生成一个ReadView那么两次生成的ReadView如下。 A. 先来看第一次快照读具体的读取过程 m_ids是当前活跃的事务id集合在当前箭头这行事务2已经提交所以当前活跃事务集合是3,4,5min_trx_id是最小活跃事务 那就是3max_trx_id是预分配的事务id 就是当前最大事务的id1creator_trx_id是ReadView创建者事务id在当前事务查询id为30的记录事务id是5 在进行匹配时事务5查询id为30的记录会从undo log的版本链从上到下进行挨个匹配 RR隔离级别 RR隔离级别下仅在事务中第一次执行快照读时 生成的ReadView后续复用该ReadView。 而RR 是可 重复读在一个事务中执行两次相同的select语句查询到的结果是一样的。 那MySQL是如何做到可重复读的呢? 我们简单分析一下就知道了 我们看到在RR隔离级别下只是在事务中第一次快照读时生成ReadView后续都是复用该ReadView那么既然ReadView都一样 ReadView的版本链匹配规则也一样 那么最终快照读返 回的结果也是一样的。 所以呢MVCC的实现原理就是通过 InnoDB表的隐藏字段、UndoLog 版本链、ReadView来实现的。 而MVCC 加 锁则实现了事务的隔离性。 而一致性则是由redolog 与 undolog保证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为AI注入灵魂:一种面向人机黑箱的元人文治理新范

为AI注入灵魂:一种面向人机黑箱的元人文治理新范式 在人工智能治理领域,我们正面临一个根本性的范式转移:挑战从纯粹的“技术黑箱”转向更为复杂的 “人机混合黑箱” 。当人类偏好、算法决策与社会环境相互缠绕,传…

2025年5款主流服务管理工具大盘点!总有一款最值得你选! - RAIN

2025年5款主流服务管理工具大盘点!总有一款最值得你选!一、开篇:数字化时代,服务管理已成企业 “刚需配置”​ 在当今数字化转型已成为企业核心战略的背景下,“服务能力”正逐渐演变为决定竞争力的关键因素。然而…

2025.9.28——1黄

普及/提高- P5194 [USACO05DEC] Scales S wpmx说自己没看清题卡了很久的简单dfs题,试着做了一下,难点在于倒着dfs,这是一个重要剪枝。

聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾

2025 年 9 月 26 日,为期三天的云栖大会在杭州云栖小镇圆满闭幕。随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。为了解决企业在 AI 应用落地中面临的高成本、高复杂度和高风险等核心…

删除 Ubuntu Nautilus 资源管理器侧栏的默认目录

Nautilus 是 Ubuntu 默认的文件管理器。默认情况下,系统会在侧边栏显示"图片"、"视频"、"文档"等用户目录文件夹,但这些可能并不是我们经常访问的位置。(默认情况下,红框处还存在音…

完整教程:整合与超越:论“开源AI智能名片链动2+1模式S2B2C商城小程序”对传统红人直播带货模式的升维

完整教程:整合与超越:论“开源AI智能名片链动2+1模式S2B2C商城小程序”对传统红人直播带货模式的升维pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

2025 最新隔音板厂家权威推荐排行榜:聚焦实力厂商,阻尼 / 聚酯纤维等全品类适配与标杆案例解析室外/KTV/隔音板安装/沈阳/ 厂房隔音板厂家推荐

随着居住与办公品质需求升级,噪声污染已成为影响生活工作的核心痛点,KTV、家庭影院、工厂车间等不同场景对隔音材料的性能、环保性与适配性提出差异化要求。然而当前市场中,隔音板产品质量参差不齐,部分厂商存在技…

在阿里云上建立网站的步骤天眼查询企业信息系统

From: http://www.cnblogs.com/lhb25/p/35-javascript-chart-and-graph-libraries.html 图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等。可视化图表可以帮助开发者更容易理解复杂的数据&#xff…

2025 年医疗器械注册咨询公司最新权威推荐排行榜:TOP 级服务商全流程能力解析,助力企业高效合规拿证医疗器械注册咨询//二类医疗器械注册咨询/三类医疗器械注册咨询公司推荐

当前医疗器械行业监管持续收紧,注册流程涉及临床评价、体系辅导、生产许可等多环节,专业性极强,多数企业因缺乏专业经验面临材料准备不足、周期延长等问题,且市场上咨询服务商水平参差不齐,存在服务不规范、收费不…

庆网站制作公司wordpress在线文档

目录 一.什么是代码注释二.为什么写代码要注释三.代码注释的方式 1.单行注释,使用英文符号 #2.多行注释 方法一:英文状态下使用单引号 ”””方法二:英文状态下使用双引号 “” (和方法一有点类似)方法三:选中单行或者多行&#…

git合并最近的多个提交

1. 执行 rebase git rebase -i HEAD~3 这表示对 最近的 3 个提交 进行编辑。 2. 编辑提交列表 会弹出文本编辑器、看到类似:pick a1b2c3 提交1 pick d4e5f6 提交2 pick g7h8i9 提交3把后两个改成 s 或 squash:pick a…

珠海网站建设乐云seo在线制作网站建设费用预算表

前言 安装心得 经过多种方式操作,发现二进制方法安装太复杂,证书生成及其手工操作太多了,没有安装成功;helm方式的安装,v1.7.0的chart包执行安装会报错,手工修复了报错并修改了镜像地址,还是各…

Why Startups and Enterprises Are Betting Big on React for Frontend Development?

In today’s digital-first world, user experience is no longer a “nice to have”—it is the core product. Whether you’re building a SaaS platform, an e-commerce storefront, or a mobile-first consumer …

Redis HASH+RediSearch 设计自定义索引

目录一、核心设计:用 Hash 替代 Set 的结构定义1. 结构设计原则2. 为何此结构能替代 Set?二、关键操作实现:用 Hash 完成唯一性校验1. 依赖注入(基础配置)2. 业务层调用示例(以 Customer 表为例)三、集成 RediS…

数据结构:Map 和 Set(一) - 指南

数据结构:Map 和 Set(一) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

《算法与数据结构》第七章[第1节]:图 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

高校校园网网站内容如何建设做网站策划计划书

1.栈与队列 文章目录 1.栈与队列写在前面1.1栈与队列理论基础1.2用栈实现队列1.3用队列实现栈1.4有效的括号1.5删除字符串中的所有相邻重复项1.6逆波兰表达式求值1.7滑动窗口最大值1.8前K个高频元素 Reference 写在前面 本系列笔记主要作为笔者刷题的题解,所用的语…

Altium Designer 25.8.1 最新版安装指南

软件介绍 Altium Designer 25.8.1是一款功能强大的电子设计自动化(EDA)软件,广泛应用于消费电子、通信、汽车、航空航天等行业的电子设计开发。它集成了原理图设计、PCB布局、3D建模、仿真、文档生成等功能,无需切…

2025 年最新推荐地坪源头厂商权威排行榜:聚焦环氧 / 聚氨酯 / 固化剂等多类型地坪,精选 TOP5 优质企业水性聚氨酯/环氧/密封固化剂地坪施工厂商推荐

2025 年地坪行业虽在绿色环保与智能化趋势下持续发展,但市场乱象依旧突出。大量中小企业扎堆低端市场,同质化竞争激烈,价格战频发导致产品与服务质量参差不齐;高端功能性地坪材料仍存在部分依赖进口的情况,国产替…