首页 > 其他分享 >锁的分类(八)

锁的分类(八)

时间:2022-10-01 10:37:22浏览次数:50  
标签:语句 事务 分类 获取 死锁 100 id

  • ​全局锁​
全局锁就是对 整个数据库实例 加锁。当你需要让整个库处于 只读状态 的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:
数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用 场景 是:做 全库逻辑备份

# 获取全局锁
Flush tables with read lock
  • ​死锁​
死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环
  • 死锁产生条件
  • 锁的分类(八)_MySQL

  • 死锁案例
# 用户A给用户B转账100,同时用户B给用户A转账100,这时可能发生死锁
# 事务1先获取用户A的排他锁,减少100;事务2这时也获取用户B的排他锁,减少100
# 这时事务1想获取用户B的排他锁,给B的账户增加100;同时事务2想获取用户A的排他锁,给用户A的账户增加100
# 2个事务都想获取对方占有的锁,2个事务都需要等待对方先执行完后才能执行,这就是死锁

锁的分类(八)_回滚_02

  • 代码案例
# 开启1个新的连接,开启1个新的事务
begin;
# 事务1获取id为1的排他锁
update account set money=10 where id=1;

# 开启第2个新的连接,开启1个新的事务
begin;
# 事务2获取id为2的排他锁
update account set money=10 where id=2;

# 在第1个连接中,事务1要操作id为2的行,就需要获取id为2的排他锁
# 但id为2的排他锁被事务2持有,需要先等待事务2释放,执行这条语句时会处于阻塞状态
update account set money=20 where id=2;

# 在连接2中执行如下语句,需要事务2去获取id为1的排他锁
# 但id为1的排他锁被事务1持有,需要先等待事务1释放,这是执行如下语句时会报死锁错误
update account set money=20 where id=1;

# 这是连接2中的语句会回滚,并释放锁
# 同时连接1中的语句会执行成功
  • 解决死锁
# 方案1:直接进入等待,直到超时。这个超时时间可以通过参数innodb_lock_wait_timeout 来设置。如果将该参数设置的太短,会影响正常的阻塞
# 方案2:发起死锁检测,发现死锁后,主动回滚死锁链条中的某一个事务(将持有最少行级排他锁的事务进行回滚),
让其他事务得以继续执行。将参数 innodb_deadlock_detect 设置为on ,表示开启这个逻辑
  • 避免死锁
  • 锁的分类(八)_数据_03



标签:语句,事务,分类,获取,死锁,100,id
From: https://blog.51cto.com/chniny/5728132

相关文章

  • ALV :汇总,分类汇总(小计),排序,过滤
    货铺QQ群号:834508274下面开始干货部分……ALV标准功能汇总,分类汇总,排序,过滤这些功能除了可以直接使用它的标准功能按钮之外,你也可以在程序里设定,让ALV列表第一次显示出来就......
  • 朴素贝叶斯分类器
    朴素贝叶斯分类器朴素贝叶斯算法:它是一种基于贝叶斯定理的监督机器学习算法。它是一种用于各种分类任务的概率机器学习算法。在我们深入探讨这个话题之前,我们首先要了解......
  • SARscape5.6.2形变结果分类工具介绍
    SARscape5.6.2版本干涉叠加模块新增时序分类工具,可对时序InSAR进行高级后处理和分析。该工具通过现象特征和参数分析对位移时间序列进行自动分类。可使用外部气象数据(雨、......
  • 网络编程-IP地址的分类
    网络编程-IP地址的分类网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这个用于区分的标识这就是IP地址;IP地址由4个数字组成,形如“192.168.1.1”。(其实是4个字......
  • 18个面向初学者的经典开源计算机视觉项目-图像分类篇Inception(三)
    在研究这篇文章时,有一点很清楚。2014年是发展真正流行的图像分类预训练模型的标志性一年。尽管上述VGG-16在当年的ILSVRC中排名第二,但排名第一的不是别人,正是谷歌——通过它......
  • 深度学习:文本分类模型中的“蒸”功夫
    作者:Xingzhe.AI来自:行者AI 前言2018年Bert的横空出世给自然语言处理带来了巨大的突破,Bert及其衍生模型在多个文本处理下游任务中达到了SOTA的结果。但是这样的提升是......
  • EXCEL如何实现分类
    目的:根据第二列的不同计划线分类来筛选出第一列的料号第一步:选中两列第二步:点击插入,选择"数据透视表"效果图图一:两列都选择行图二:一列设置为筛选器,一列设置为......
  • SQL通用语法和SQL分类
    SQL通用语法1.SQL语句可以单行或多行书写,以分号结尾2.可使用空格和缩进来增强语句的可读性3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写4.3种注释单......
  • Pytorch实战:8层神经网络实现Cifar-10图像分类验证集准确率94.71%
    实验环境:Pytorch1.7.0torchvision0.8.2Python3.8CUDA10.2+cuDNNv7.6.5Win10+PycharmGTX1660,6G网络结构采用最简洁的类VGG结构,即全部由3*3卷积和最大池......
  • SpringBoot(概述、起步依赖原理分析、SpringBoot配置(配置文件分类、YAML))
    SpringBoot概述SpringBoot是由Pivotal团队提供用来简化Spring的搭建和开发过程的全新框架。随着近些年来微服务技术的流行,SpringBoot也成了时下炙手可热的热点技......