- 什么是事务
事务是作为单个逻辑单元执行的一系列操作。 多个操作作为一个整体向系统提交,要么执行、要么都不执行,事务是一个不可分割的工作逻辑单元。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。
-
如何控制事务
-
事务开启
-
BEGIN;
UPDATE USER SET money=money-100 WHERE id=1;
UPDATE USER SET money=money+100 WHERE id=2; -
START TRANSACTION;
UPDATE USER SET money=money-100 WHERE id=1;
UPDATE USER SET money=money+100 WHERE id=2;
-
-
事务提交
commit
-
事务回滚
rollback
-
检查自动提交设置
SELECT @@autocommit
-
-
事务四大特征
- 原子性:事务是最小的单位,不可分割
- 一致性 :事务要求,同一事务中SQL语句,必须同时成功或同时失败
- 隔离性:事务1和事务2之间具有隔离性
- 持久性:事务一旦结束(commit,rollback),就不可返回
-
隔离级别
-
隔离级别
- read uncommitted;读未提交的
- read committed;读已经提交的
- repeatable read; 可以重复读
- serializable 串行化
-
查看系统级别
SELECT @@global.transaction_isolation; -
查看会话级别
SELECT @@transaction_isolation; -
修改系统-隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
-
修改会话-隔离级别
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
-
read uncommitted 引起脏读:一个事务读到另一个事务没有提交的数据
-
read committed 引起 不可重复读现象:读取同一个表的数据,发现前后不一致
-
repeatable read 引起幻读:事务a操作和事务b同时操作一张表,事务a提交的数据,也不能被事务b读到,就可能造成幻读。
-
serializable
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT @@global.transaction_isolation事务A、B先后开启,事务B要等事务A结束后才能执行成功。
-