深圳平湖网站建设公司微信企业网站

张小明 2026/1/10 14:35:59
深圳平湖网站建设公司,微信企业网站,网站建设工期时间表,程序外包网站1.ACID特性1.1.事务的四个特性原子性#xff1a;事务的所有操作要么全部提交成功#xff0c;要么全部失败回滚#xff0c;对于一个事务中的操作不能只执行其中一部分。一致性#xff1a;事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致性与业务规则有关事务的所有操作要么全部提交成功要么全部失败回滚对于一个事务中的操作不能只执行其中一部分。一致性事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致性与业务规则有关比如银行转账不论事务成功还是失败转账双方的总金额应该是不变的。隔离性多个并发事务之间需要相互隔离即一个事务的执行不能被其他事务干扰。持久性一旦事务提交则其所做的修改将永久保存到数据库中。即使发生系统崩溃修改的数据也不会丢失。1.2.如何保证事务的四个特性1原子性undo log是InnoDB存储引擎来确保事务原子性的关键机制undo log记录了事务发生之前的数据如果事务失败InnoDB会根据undo log回滚数据。当事务开始修改数据时InnoDB首先会在undo log中记录旧值即修改前的值。如果事务顺利进行并最终提交undo log会在某个时间点被清除。如果事务中的某个操作失败或者事务被明确地回滚InnoDB会使用undo log中的信息来撤销所有更改确保数据的原子性。2一致性一致性是ACID的目的也就是说只要保证原子性、隔离性、持久性自然也就保证了数据的一致性。3隔离性MySQL使用多种隔离级别来控制事务如何与其他并发事务隔离。InnoDB存储引擎使用MVCC (多版本并发控制)机制来处理并发事务确保每个事务都有自己的数据版本。4持久性由MySQL的存储引擎如InnoDB通过写入磁盘来确保。即使在系统崩溃之后已提交事务的更改也不会丢失。InnoDB使用“redo log”来记录数据的更改在系统崩溃后redo log可用于恢复数据。2.事务的隔离级别事务的隔离级别是指在数据库管理系统中多个并发事务之间如何相互隔离避免相互干扰从而保证数据的准确性和一致性。不同的隔离级别定义了在并发事务中如何控制事务间的可见性和对数据的访问主要包括四种常见的级别读未提交Read Uncommitted、读已提交Read Committed、可重复读Repeatable Read和串行化Serializable。隔离级别越高对并发事务的限制越严格但会降低系统的吞吐量和性能而隔离级别越低系统的吞吐量和性能越高但可能会出现脏读、不可重复读或幻读等问题。2.1.事务的隔离级别1读未提交读未提交是最低的隔离级别在这个级别当前事务可以读取未被其他事务提交的数据以至于会出现“脏读”、“不可重复读”和“幻读”的问题。2读已提交当前事务只能读取已经被其他事务提交的数据可以避免“脏读”现象。但不可重复读和幻读问题仍然存在。3可重复读确保在同一事务中多次读取相同记录的结果是一致的即使其他事务对这条记录进行了修改也不会影响到当前事务。是MySQL默认的隔离级别避免了“脏读”和“不可重复读”也在很大程度上减少了“幻读”问题。串行化最高的隔离级别通过强制事务串行执行来避免并发问题可以解决“脏读”、“不可重复读”和“幻读”问题。但会导致大量的超时和锁竞争问题。2.2.事务的隔离级别如何实现读未提交是如何实现的不提供任何锁机制来保护读取的数据允许读取未提交的数据即脏读。读已提交可重复读是如何实现的读已提交和可重复读通过 MVCC 机制中的 ReadView 来实现。READ COMMITTED每次读取数据前都生成一个 ReadView保证每次读操作都是最新的数据。REPEATABLE READ只在第一次读操作时生成一个 ReadView后续读操作都使用这个 ReadView保证事务内读取的数据是一致的。串行化是如何实现的事务在读操作时必须先加表级共享锁直到事务结束才释放事务在写操作时必须先加表级排他锁直到事务结束才释放。补充1表级共享锁允许多个事务同时读取表中的数据但不允许修改数据其他事务也只能读取不能修改。2表级排他锁阻止其他事务访问表中的数据包括读取和修改确保当前事务独占对该表的操作权限。3.脏读、幻读、不可重复读1脏读事务 A、B 交替执行事务 A 读取到事务 B 未提交的数据这就是脏读。2不可重复读在一个事务范围内两个相同的查询读取同一条记录却返回了不同的数据这就是不可重复读。3幻读事务A查询一个范围的结果集另一个并发事务 B 往这个范围中插入 / 删除了数据并静悄悄地提交重点然后事务 A 再次查询相同的范围两次读取得到的结果集不一样了这就是幻读。4.MVCC机制4.1.什么是MVCCMVCC 是多版本并发控制主要用来解决数据库并发问题。在支持 MVCC 的数据库中当多个用户同时访问数据时每个用户都可以看到一个在某一时间点之前的数据库快照并且能够无阻塞地执行查询和修改操作而不会相互干扰。在传统的锁机制中如果一个事务正在写数据那么其他事务必须等待写事务完成才能读数据MVCC 允许读操作访问数据的一个旧版本快照同时写操作创建一个新的版本这样读写操作就可以并行进行不必等待对方完成。在 MySQL 中特别是 InnoDB 存储引擎MVCC 是通过版本链和 ReadView 机制来实现的。4.2.什么是版本链(?)在InnoDB中每一行数据都有两个隐藏的列一个是DB_TRX_ID另一个是DB_ROLL_PTR。DB_TRX_ID保存创建这个版本的事务ID。DB_ROLL_PTR指向undo日志记录的指针这个记录包含了该行的前一个版本的信息。通过这个指针可以访问到该行数据的历史版本。当事务更新一行数据时InnoDB不会直接覆盖原有数据而是创建一个新的数据版本并更新DB_TRX_ID和DB_ROLL_PTR使得它们指向前一个版本和相关的undo日志。这样老版本的数据不会丢失可以通过版本链找到。由于undo日志会记录每一次的update并且新插入的行数据会记录上一条undo日志的指针所以可以通过这个指针找到上一条记录这样就形成了一个版本链。5.readview视图5.1.什么是readview视图ReadView读视图是 InnoDB 为了实现一致性读Consistent Read而创建的数据结构它用于确定在特定事务中哪些版本的行记录是可见的。ReadView 主要用来处理隔离级别为可重复读REPEATABLE READ和读已提交READ COMMITTED的情况。因为在这两个隔离级别下事务在读取数据时需要保证读取到的数据是一致的即读取到的数据是在事务开始时的一个快照。当事务开始执行时InnoDB 会为该事务创建一个 ReadView这个 ReadView 会记录 4 个重要的信息creator_trx_id创建该 ReadView 的事务 ID。m_ids所有活跃事务的 ID 列表活跃事务是指那些已经开始但尚未提交的事务。min_trx_id所有活跃事务中最小的事务 ID。它是 m_ids 数组中最小的事务 ID。max_trx_id 事务 ID 的最大值加一。换句话说它是下一个将要生成的事务 ID。5.2.readview如何判断记录某个版本是否可见当一个事务读取某条数据时InnoDB 会根据 ReadView 中的信息来判断该数据的某个版本是否可见。①如果某个数据版本的 DB_TRX_ID 小于 min_trx_id则该数据版本在生成 ReadView 之前就已经提交因此对当前事务是可见的。②如果某个数据版本的 DB_TRX_ID 大于 max_trx_id则表示创建该数据版本的事务在生成 ReadView 之后开始因此对当前事务是不可见的。③如果某个数据版本的 DB_TRX_ID 在 min_trx_id 和 max_trx_id 之间需要判断 DB_TRX_ID 是否在 m_ids 列表中不在表示创建该数据版本的活跃事务已经提交因此对当前事务也是可见的。在则表示创建该数据版本的事务仍然活跃或者在当前事务生成 ReadView 之后开始因此对当前事务是不可见的。5.3.可重复读和读已提交在readview上的区别可重复读REPEATABLE READ和读已提交READ COMMITTED的区别在于生成 ReadView 的时机不同。1可重复读在第一次读取数据时生成一个 ReadView这个 ReadView 会一直保持到事务结束这样可以保证在事务中多次读取同一行数据时读取到的数据是一致的。2读已提交每次读取数据前都生成一个 ReadView这样就能保证每次读取的数据都是最新的。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

html家乡网站设计模板成都网络推广运营公司

FaceFusion开源生态崛起,推动人脸编辑 democratization在数字内容创作的浪潮中,一个曾经只属于好莱坞特效工作室或高价商业软件的功能——人脸交换与深度图像编辑,正悄然走进普通开发者和独立创作者的视野。过去几年里,我们见证了…

张小明 2025/12/24 4:11:10 网站建设

福州最好的网站建设服务商锦州网站设计

主要包含两个部分一个代理模型(surrogate model),用于对目标函数进行建模。代理模型通常有确定的公式或者能计算梯度,又或者有已知的凹凸性、线性等特性,总之就是更容易用于优化。更泛化地讲,其实它就是一个…

张小明 2025/12/27 1:17:09 网站建设

做竞赛的平台或网站专门做搜索种子的网站有哪些

终极文件压缩与二维码生成解决方案:跨平台工具完全指南 【免费下载链接】解压缩全能王与二维码生成器-多平台工具包 解压缩全能王与二维码生成器 - 多平台工具包欢迎使用解压缩全能王与二维码生成器资源包,本资源包含两个核心工具:1. **解压缩…

张小明 2025/12/25 19:50:10 网站建设

手机移动端网站怎么做phpcms网站模版

市场上的降AI率工具良莠不齐,如何科学判断降AI率效果是很多学生、老师最关心的问题,担心降不来AI率,耽误时间还花不少钱。 本文将从以下五个维度系统,分析2025年主流的8个降AI工具,教大家如何选择适合自己的降AIGC工具…

张小明 2025/12/31 10:21:44 网站建设

北京做网站公司排衡阳网站建设网站

终极企业级后台管理系统:D2Admin完整功能解析与实战指南 【免费下载链接】d2-admin 项目地址: https://gitcode.com/gh_mirrors/d2a/d2-admin D2Admin作为一款完全开源免费的企业中后台产品前端集成方案,凭借其丰富的功能模块和优秀的用户体验&a…

张小明 2025/12/30 8:23:16 网站建设

专业网页制作技术深圳seo公司

文章目录 字符串基本概念定义和初始化字符串输入输出如下格式均可实现输入输出 字符串遍历操作字符串和字符指针字符指针的赋值引用 通用的字符串处理函数输入输出复制 连接 比较 求长度链接比较长度查找替换 字符串 基本概念 1.C语言字符串本质就是数组的延伸,以…

张小明 2025/12/24 3:59:02 网站建设