加入收藏 | 设为首页 | 会员中心 | 我要投稿 娄底站长网 (https://www.0738zz.cn/)- 科技、网络安全、业务安全、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL事务之ACID特性的达成原理是什么

发布时间:2022-02-25 14:50:50 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下MySQL事务之ACID特性的实现原理是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! 事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍
      小编给大家分享一下MySQL事务之ACID特性的实现原理是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
 
      事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。
 
       MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。
 
一、基础概念
 
     事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6。
 
     首先回顾一下MySQL事务的基础知识。(推荐课程:MySQL视频教程)
 
1. 逻辑架构和存储引擎
  
 MySQL服务器逻辑架构从上往下可以分为三层:
 
(1)第一层:处理客户端连接、授权认证等。
 
(2)第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。
 
(3)第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储引擎实现的。MySQL支持事务的存储引擎有InnoDB、NDB Cluster等,其中InnoDB的使用最为广泛;其他存储引擎不支持事务,如MyIsam、Memory等。
 
如无特殊说明,后文中描述的内容都是基于InnoDB。
 
2. 提交和回滚
典型的MySQL事务是如下操作的:
 
start transaction;
……  #一条或多条sql语句
commit;
其中start transaction标识事务开始,commit提交事务,将执行结果写入到数据库。如果sql语句执行出现问题,会调用rollback,回滚所有已经执行成功的sql语句。当然,也可以在事务中直接使用rollback语句进行回滚。
  
在自动提交模式下,如果没有start transaction显式地开始一个事务,那么每个sql语句都会被当做一个事务执行提交操作。
 
通过如下方式,可以关闭autocommit;需要注意的是,autocommit参数是针对连接的,在一个连接中修改了参数,不会对其他连接产生影响。

(编辑:娄底站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读