大家好,我是,事务是一个数据库绕不开的话题,今天和大家一起聊聊。
事务是什么?事务(Transaction)是并发控制的基本单位。所谓的事务呢,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
在介绍事务的特性之前,我们先看下MySQL的逻辑架构,
如上图所示,MySQL服务器逻辑架构从上往下可以分为三层:
第一层:处理客户端连接、授权认证等。
第二层:服务器层,负责查询语句的解析、优化、缓存以及内置函数的实现、存储过程等。
第三层:存储引擎,负责MySQL中数据的存储和提取。MySQL中服务器层不管理事务,事务是由存储引擎实现的。**MySQL支持事务的存储引擎有InnoDB、NDBClustr等,其中InnoDB的使用最为广泛;其他存储引擎不支持事务,如MyISAM、Mmory等。
后续讨论主要以InnoDB为主。
事务有什么特征?事务的特性,可以总结为如下4个方面:
原子性(Atomicity):原子性是指整个数据库的事务是一个不可分割的工作单位,在每一个都应该是原子操作。当我们执行一个事务的时候,如果在一系列的操作中,有一个操作失败了,那么需要将这一个事务中的所有操作恢复到执行事务之前的状态,这就是事务的原子性。
一致性(Consistncy):一致性呢是指事务将数据库从一种状态转变成为下一种一致性的状态,也就是说是在事务的执行前后,这两种状态应该是一样的,也就是在数据库的完整性约束不会被破坏。另外的话,还需要注意的是一致性不