MySQL事务复习

MySQL事务复习

1.1事务的概述

  • 事务(transaction),一个事务是一个完整的业务逻辑单元,不可再分,

比如:银行账户转账,从A账户向B账户转账,需要执行两条update语句,

一个update增加,

一个update减少,

以上两条update与句,同时成功,同时失败.

不如允许出现一条成功一条失败,

要想保证以上的两条DML语句同时成功,同时失败,那么就需要使用数据库”事务机制”

  • 和事务有关的语句只有DML语言,数据库操纵语句,(insert delete update)

为什么?因为这些语句都是与数据库 中的”数据”相关的,

事务的存在是为保证数据的完整性,安全性

  • 假如所有的业务只需要一条DML语言,那还需要事务机制吗?

不需要事务了;

但实际情况不是这样的,通常一个事务,”业务”,需要多条DML语言共同联合完成

1.2事务的原理

mysql五大语句

  1. DQL数据库查询语句

  2. DML数据库操纵语句

  3. DDL数据库定义语言

  4. TCL(事务:commit rollback) savepoint保存点

  5. DCL: (授权)

image 20200904084955651

1.3事务的特性

事务的四大特性ACID

  1. A.(Atomicity)原子性:事务是最小的单元,不可被分

  2. C(consistency)一致性:事务必须保证多条DML语句同时成功或者失败.

  3. I (isolation)隔离性:事务A必须与事务B之间具有隔离相当于线程的

  4. D(durability):持久性:持久性是说最终数据必须持久化到硬盘文件之中,事务才算成功的结束

1.4事务的隔离性

关于事务之间隔离性

事务隔离性存在隔离级别,理论上包括4个:

实际上都是二挡起步:

  1. 第一级别: Read uncommitted(读未提交),当前事务可以读取对方未提交的事务

读取未提交数据会存在脏读(脏读是读取前一事务未提交的脏数据)现象:表示读了脏的数据

  1. 第二级别: **Read Committed(读已提交)**对方事务已经提交的数据我方可以读取到

读已提交存在的问题是:不可重复读(不可重复读是重新读取了前一事务已提交的数据)

  1. 第三级别: Repeatable Reads(可重复读)

这种隔离隔离级别解决了:不可重复读

存在问题:读取的数据是幻象

幻读(虚读)指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

  1. 第四级别(Serializable(串行化)):序列化,串行化读解决了所有问题,

缺点:效率低,需要事务排队

Oracle默认二挡起步,读已经提交

Mysql默认隔离级别,可重复读

1.5 演示事务

Mysql事务是默认情况下自动提交,(什么是自动提交,只要执行任意一条DML语句则提交一次)

首先要设置隔离事务级别

1. read uncommitted(读未提交)

Read uncommitted

打开两个窗口,修改一个事务的数据,一个事务可以查询到,

设置事务的隔离级别

set global transaction isolation level read uncommitted;

查看msyql隔离级别;

select @@global.tx_isolation;

image 20200904085613662

设置完隔离级别,离开一下.

image 20200904085632680

2. read committed(读已提交)

可以读取其他事务提交事务提交的数据(大多数数据库默认的隔离级别)
image 20200904085706504

3. repeatable read(可重复读)

Mysql默认的隔离级别

image 20200904085811828

当我们将当前对话的隔离级别设置为repeatable read的时候,当前对话可以重复读,就是每次读取的结果集都相同,其实是备份了一份数据,出现幻读现象

4. serializable(串行化)

image 20200904085843238
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以码平川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值