-
何为事务
具有逻辑关系的一组操作,组成这个操作的各个逻辑单元,要么全部成功,要么全部失败
-
事务属性
- 原子性
一组事务,要么成功;要么撤回
* 一致性
> 如果事务成功执行,则数据库的状态得到了进行了正确的转变。
* 隔离性
> 保证不同的事务相互独立、透明地执行。
* 持久性
> 即使出现系统故障,之前成功执行的事务的结果也会持久存在。
- 原子性
-
事务控制
- START TRANSACTION:MySQL开启事务
-
SAVEPOINT:创建回滚点
SAVEPOINT SAVEPOINT_NAME;
- COMMIT:提交事务
-
ROLLBACK:回滚事务
ROLLBACK; // 回滚到保存点 ROLLBACK TO savepoint_name;
-
RELEASE SAVEPOINT:删除回滚点
RELEASE SAVEPOINT SAVEPOINT_NAME;
-
SET TRANSACTION:初始化数据库事务,指定随后的事务的各种特征
SET TRANSACTION [ READ WRITE | READ ONLY ];
-
事务并发问题
- 脏读
一个事务读到另一个事务未提交的数据
* 不可重复读
> 事务A读到事务B update 的数据,导致两次查询的结果不一致
* 虚读/幻读
> 一个事务A读到另外一个事务B Insert 的数据,导致两次查询的结果不一致
- 脏读
-
事务隔离级别
- READ UNCOMMITED
- READ COMMITED:解决脏读的问题
- REPEATABLE READ:解决脏读和不可重复读的问题
- SERIALIZABLE:解决所有的事务并发问题
-
设置事务隔离级别
-
ORACLE
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE|READ COMMITTED;
NOTE: ORACLE只有2个事务隔离级别,默认隔离级别是READ COMMITTED
-
MySQL
//设置事务隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL 事务隔离级别; // 查看事务隔离级别 SELECT @@tx_isolation;
-
网友评论