Skip to content

六、事务

一、简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

二、操作

1、查看/设置事务提交方式


(1)查看

sql
select @@autocommit;

(2)设置

sql
set @@autocommit=0;		-- 0为手动提交 ,1为自动提交

2、开启事务

sql
start transactionbegin;

3、提交事务

sql
commit;

4、回滚事务

sql
rollback;

三、事务四大特性(ACID)

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

四、并发事务问题

问题描述
脏读一个事物读到另外一个事务还没有提交的数据
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读
幻读一个事务按照条件查询数据时,没用对应的数据行,但是插入数据时,又发现这行数据已经存在,好像出现了“幻影”

五、事务隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted
Read commited不会
Repeatable Read(默认)不会不会
Serializable不会不会不会

1、查看事务隔离级别

sql
select @@transaction_isolation;

2、设置事务隔离级别

sql
set [session | global] transaction isolation level {read uncommitted | read committed | repeatable read | serializable};

sql
set session transaction isolation level read uncommitted;