谷粒学院学习知识点汇总-------01

前言--------
谷粒学院视频的系列首先先是学习一波理论知识,最后跟着视频敲一遍整个项目,到部署项目上线,给自己定个flag,一个月之内完成项目部署上线。

一.事务
1.1事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败
1.2典型场景:银行转账
lucy转账100给mary,lucy少100,mary多了100

二.事务的四个特性
①原子性:要么都成功,要么都失败
②一致性:操作的总量是一致的,lucy100->转给mary,lucy0元而mary200元,总量都是200元
隔离性:多个事务之间操作并不影响
④持久性:事务提交过后表中的数据真正地发生变化

三.那么由于事务具有隔离性,各个事务之间互不影响,但如果不考虑事务的隔离性(即出现并发的问题诸如此类)如何解决?
① 还有一种更新丢失问题:当两个事务或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,最后更新的更新覆盖了由其他事务所做的更新
② 产生三种读的问题
脏读,不可重复读,幻(虚)读
就目前而言:不可重复读是允许的是可以存在的,但是脏读是不允许的,因为脏读事务尚未提交就已经读取到未提交的数据字段

四.不可重复读:是一种现象,是一种现象,就好比淘宝商城一个货品,本来只剩一个,当事务t2进行更改和提交之后变成了2个,此时t1事务可以读取到2个.
解决不可重复读问题之后,t2事务提交过后,t1事务没关闭但是读取到的数据就还是1,除非再重新开一个事务,读取到的就是2

在这里插入图片描述

为了解决此类并发问题,数据库提供四种事务的隔离级别(所有数据库都需要解决脏读问题)
在这里插入图片描述

实际案例应用:当前两个事务,一个lucy,一个mary对数据库中money字段进行操作

在这里插入图片描述
解决方案:
悲观锁和乐观锁
悲观锁:串行,只能一个人操作
乐观锁:添加版本号version,lucy一个事务进行提交过后版本号version+1,先比较版本号是否一致,mary版本号为1,不可修改
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

破晓以胜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值