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参数是针对连接的,在一个连接中修改了参数,不会对其他连接产生影响。 (编辑:娄底站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |