面试时谈到mysql事务,应关联其核心四大特性:原子性、一致性、隔离性与持久性。
1、 启动两个MySQL客户端会话窗口A和B,并依次执行图中所示命令。文中所用数据库及数据表仅为演示用途,实际操作中可根据需求自行创建对应数据库与表结构进行验证。

2、 将事务隔离级别调整为“读未提交”,此时在窗口B中即可实时看到窗口A中尚未提交的变更数据。

3、 切换隔离级别为“读已提交”后再次观察,窗口B中仍显示旧数据,无法感知窗口A中未提交的修改。

4、 设置隔离级别为“可重复读”,此时即便窗口A已提交更改,窗口B在当前事务内仍读取到一致的快照数据;仅当B开启新事务后,才能看到更新后的结果。

5、 当隔离级别设为“可串行化”且禁用自动提交时,若窗口A对某行执行写操作但未提交,则窗口B对该行的查询将被阻塞,直至A事务结束。



















