【Mysql高级】【第十三章】【 事务基础知识】


1. 数据库事务概述

https://www.bilibili.com/video/BV1iq4y1u7vj?p=161

在这里插入图片描述

1.1 存储引擎支持情况

在这里插入图片描述

1.2 基本概念

在这里插入图片描述

1.3 事务ACID特性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 事务的状态

在这里插入图片描述
在这里插入图片描述

2. 如何使用事务

https://www.bilibili.com/video/BV1iq4y1u7vj?p=162&spm_id_from=pageDriver
在这里插入图片描述

2.1 显式事务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 回滚到保存点的时候 事务 并没有结束(还需要进一步commit或者rollback)

2.2 隐式事务

自动提交
在这里插入图片描述

手动提交
在这里插入图片描述
对于DDL来说,都是自动提交!关闭事务自动提交只会影响DML
在这里插入图片描述

2.3 隐式提交数据的情况

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 使用举例1:提交和回滚

案例1
在这里插入图片描述

案例2:链式事务
在这里插入图片描述

在这里插入图片描述

2.5 使用举例2:测试不支持事务的engine

在这里插入图片描述

2.6 使用举例3:SAVEPOINT

在这里插入图片描述

3. 事务隔离级别

在这里插入图片描述

3.1 数据准备

在这里插入图片描述

3.2 数据并发问题

事务的隔离性要考虑多个线程操作同一个资源造成的多线程并发安全问题。

加锁可以非常完美的保证隔离性,但是这会造成数据库性能的大大下降。

  • 如果两个事务并发的修改——必须隔离开
  • 如果两个事务并发的查询——完全不用隔离
  • 如果一个事务修改,另一个事务查询——脏读、不可重复读、虚读

1.脏写

在这里插入图片描述
感觉和脏读一个尿性。。

2. 脏读

一个事务读取到另一个事务还未提交的数据;

在这里插入图片描述

3. 不可重复读

一个事务读取到另一个事务的更新并提交的数据
在这里插入图片描述

4.幻读

一个事务读取到另一个事务插入或者删除并提交的数据

对于两个事务 T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入、删除 一些行,提交之后, 如果 T1 再次读取同一个表, 就会多出、少了几行

在这里插入图片描述

不可重复读和幻读的区别

在这里插入图片描述
在这里插入图片描述

3.3 SQL标准中的四种隔离级别

  • 并发性和隔离性是两个有冲突的性质;
  • 如何在保证隔离性的同时,提高并发性,就需要进行设计;每种隔离级别也对应着每种并发问题;

为了解决上面的三个问题,数据库提出四大隔离级别;隔离级别越高, 数据一致性就越好, 但并发性越弱。


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.4 MySQL所支持的四种隔离级别

在这里插入图片描述
在这里插入图片描述

3.5 如何设置事务的隔离级别

注意:无论是GLOBAL还是SESSION,只要是命令行修改,都只是内存级别,只要重启Mysql服务器,都会恢复默认值。

在这里插入图片描述
在这里插入图片描述

Global 演示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Session演示
在这里插入图片描述

3.6 不同隔离级别举例

1.read-uncommit级别引发脏读问题演示

在这里插入图片描述
在这里插入图片描述

2.read-commit级别引发不可重复读问题演示

在这里插入图片描述

3.repeatable-read级别

p168-幻读的演示和解决方案

repeatable-read 解决了不可重复读问题:

在这里插入图片描述

幻读现象演示

在这里插入图片描述

Mysql 在repeatable-read 级别下是如何解决幻读问题的?

在这里插入图片描述
在这里插入图片描述
具体的讲解在将MVCC的时候会解释;

4. Serializable级别

4. 事务的常见分类

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值