一、MySQL 数据库命令
- 查看数据库版本:
select version();
- 查看数据库现在的隔离级别
select @@session.tx_isolation;
- 修改隔离级别:
set @@session.tx_isolation=级别参数;
-
级别参数:
1.READ-UNCOMMITTED
2.READ-COMMITTED
3.REPEATABLE-READ(MySQL innoDB的默认隔离级别)
4.SERIALIZABLE -
开启事务:
start transaction;
- 提交
commit;
- 回滚
rollback;
二、隔离级别
1. 数据库表准备

2. 读未提交

3. 读已提交

4. 可重复读

5. 可串行化 (效率最低)

5. 各种异常问题的分析
-
脏读
脏读
-
不可重复读
不可重复读
-
幻读(幻象读)
幻读(幻象读)
-
不可重复读和幻读的区别
- 不可重复读:A事务在执行过程中,B事务对数据进行了修改或删除,导致A两次读取的数据不一致;
重点在于update和delete(锁行即可解决),- 幻读:A事务在执行过程中,B事务新增了符合A事务要查询的数据,导致A两次读取的数据不一致;
重点在于insert(需要锁表解决)。
-
Tips:
MySQL已经通过锁机制在默认隔离级别的时候,就避免了幻读的出现!
如果觉得有收获就点个赞吧,更多知识,请点击关注查看我的主页信息哦~
网友评论