MySQL中的事务特性分析
发布时间:2023-06-28 09:31:17 所属栏目:MySql教程 来源:
导读:这篇“MySQL中的事务特性和实现原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
这篇“MySQL中的事务特性和实现原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL中的事务特性和实现原理是什么”文章吧。 一、概念 事务 一般指的是逻辑上的一组操作,或者作为单个逻辑单元执行的一系列操作,一个事务中的所有操作会被封装成一个不可分割的执行单元,这个单元的所有操作要么全部执行成功,要么全部执行失败,只要其中任意一个操作执行失败,整个事务就会执行回滚操作。 二、事务的特性以及类型介绍 2.1 事务特性 MySQL中的事务特性和实现原理是什么 原子性(atomicity) 事务的原子性指的是构成事务的所有操作要么全部执行成功,要么全部执行是失败。 一致性(consistency) 事务的一致性指的是事务执行之前和执行之后,数据始终处于一致的状态。 隔离性(isolation) 事务的隔离性指的是并发执行的两个事务之间互不干扰,也就是说,一个事务执行的过程中是无法看到其他事务运行过程的中间状态的。 注意:MySQL是通过锁个MVCC机制来保证事务的隔离性。 持久性(duration) 事务的持久性指的是一旦事务被提交后,此事务对数据的更改操作会被持久化到数据库中,并且不会被回滚。 2.2 两种事务类型介绍 本地事务 分布式事务 本地事务 通常基于关系型数据库控制的事务可以称作为传统事务或者本地事务。 本地事务的执行流程 客户端开始事务操作之前,需要开启一个连接回话; 开始回话之后,客户端发起开启事务的指令; 事务开始后,客户端发送各种SQL语句处理数据; 正常情况下,客户端会发起提交事务的指令,如果发生异常情况,客户端会发起回滚事务命令; 上述流程完成后,关闭会话。 ✔本地事务是有资源管理器在本地进行管理的。 本地事务的缺点在于: 不具备分布式事务的处理能力 一次事务过程只能连接一个支持事务的数据库,既不能用于多个事务性数据库。 三、MySQL事务的隔离级别 使用下面的命令可以查询全局级别和会话级别的事务隔离级别: # 默认数据库的事务隔离级别为:可重复读(REPEATABLE-READ) SELECT @@global.tx_isolation; SELECT @@session.tx_isolation; SELECT @@tx_isolation; 四、多版本并发控制MVCC Multi-Version Concurrency Control多版本并发控制,MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。 MVCC比锁的优势 可以将MVCC看成行级别锁的一种妥协,它在许多情况下避免了使用锁,同时可以提供更小的开销。根据实现的不同,它可以允许非阻塞式读,在写操作进行时只锁定必要的记录。 MVCC的实现原理 MVCC的是通过保存数据澡某个时间点的快照来实现的,也就是说,不管事务执行多长的时间,每个事务看到的数据都是一致的。根据事务的开始时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。InnonDB主要通过为每一行记录添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。但是InnoDB并不存储这些事件发生时的 实际时间 ,相反它只存储这些事件发生时的系统 版本号(version) 。这是一个随着事务的创建而不断增长的数字。每个事务在事务开始时会记录它自己的系统版本号。每个查询必须去检查每行数据的版本号与事务的版本号是否相同。 以上就是关于“MySQL中的事务特性和实现原理是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |