一.什么是事务?
一个事务其实是一个完整的逻辑,是一个最小的工作单元,不可再分。
一个事务中有很多增删改的语句,并且这些操作会同时成功或者同时失败。
二.事务的提交和回滚
1.mysql的自动提交机制
在mysql中,默认会有自动提交事务的机制(每执行一条语句提交一次)。所以我们在开启事务前要先执行“start transaction;”命令,这样会关闭mysql的自动提交事务的机制。
2.事务的提交
事务的提交就是执行该事务中的语句。
执行“commit;”命令用来提交事务。
3.事务的回滚
事务的回滚就是该事务回滚之前的命令全部取消
执行“rollback;”命令用来回滚事务。
三.事务的特性
事务的特性包括四个
1.原子性
事务是最小的工作单元,不可再分。
2.一致性
事务中的操作必须同时成功或者同时失败。
3.持久性
事务提交会将没有保存在硬盘上的数据保存在硬盘上。
4.隔离性
事务之间有隔离,这个隔离的级别会有不同,总共有四种隔离级别。
(1)读未提交(read uncommited)
读未提交是现有事务a和事务b,事务a可以读事务b中未提交的数据。
设计隔离级别语句:
set global transaction isolation level read uncommited;
(2)读已提交(read commited)
读已提交是现有事务a和事务b,事务a不可以读事务b中为提交的数据,只有当事务b的进行提交操作以后,事务a才能读事务b的数据。
设计隔离级别语句:
set global transaction isolation level read commited;
(3)可重复读(repeatable read)
可重复读是事务a读取的数据与事务b没有关系,不论事务b是否提交。
设计隔离级别语句:
set global transaction isolation level repeatable read;
(4)序列化(serializable)
序列化是只有当一个事务执行完成时,才能执行下一个事务。(效率最低)
设计隔离级别语句:
set global transaction isolation level serializable;