mysql排它锁(FOR UPDATE) 场景介绍

news/2024/7/3 13:12:27 标签: mysql, sql, 数据库锁

场景一: 当前使用for UPDATE查询,其他地方查询   --   其他地方也使用for UPDATE会堵塞, 其他地方未使用for UPDATE不会堵塞

1. 当前A(不区分是否为事务里)使用for UPDATE查询

sql">SELECT * FROM saas_employee_label_person where id = 1 for UPDATE

1.1 其他地方B(不在上一个连接里或事务里, 不区分是否为事务里)使用for UPDATE 查询(需要获取锁)

sql">SELECT * FROM saas_employee_label_person where id = 1 for UPDATE

会发生堵塞等待前一个A锁释放(A事务提交,或者A结束运行(A为非事务场景))

1.2 其他地方C(不区分是否为事务里)不使用for UPDATE 查询(无需获取锁)

sql">SELECT * FROM saas_employee_label_person where id = 1

不会堵塞,可以查询

场景二: 当前使用for UPDATE查询,其他地方UPDATE更新   --   会堵塞等待

2. 当前A(不区分是否为事务里)使用for UPDATE查询

sql">SELECT * FROM saas_employee_label_person where id = 1 for UPDATE

2.1 其他地方B(不区分是否为事务里)使用UPDATE更新数据

sql">UPDATE saas_employee_label_person set employee_id = 1111 where id = 1;

会发生堵塞等待前一个A锁释放(A事务提交,或者A结束运行(A为非事务场景))

场景三: 当前事务使用UPDATE更新, 其他地方使用for UPDATE查询   --   会堵塞等待

3. 当前事务A 使用UPDATE更新

sql">BEGIN;
UPDATE saas_employee_label_person set employee_id = 11121 where id = 1;

3.1 其他地方B(不区分是否为事务里)使用 for UPDATE查询

sql">SELECT * FROM saas_employee_label_person where id = 1 for UPDATE

会发生堵塞等待前一个事务A提交才可以获得锁

场景四: 当前非事务使用UPDATE更新, 其他地方使用for UPDATE查询   --   不会堵塞

4. 当前A(非事务下) 使用UPDATE更新

sql">UPDATE saas_employee_label_person set employee_id = 11121 where id = 1;

4.1 其他地方B(不区分是否为事务里)使用 for UPDATE查询

sql">SELECT * FROM saas_employee_label_person where id = 1 for UPDATE

不会堵塞,前一个update先执行完,所以不影响,这里一定是update先执行完在走for UPDATE查询的场景,否者就是场景二了

场景五: 当前普通查询,其他地方使用for UPDATE查询   --   不影响,不会堵塞


http://www.niftyadmin.cn/n/1447771.html

相关文章

诺基亚系列手机型号命名研究(转)

先从各大系列上来说,诺基亚根据型号字头的不同,分成十大系列:1:很难用一个具体的名称来说明,只能说是低端系列2:同上,入门级手机的低端系列3:真我个性系列4:未有机型,曾与网友讨论过,比较统一的…

Oralce常用系统函数

dual:Oracle系统内部提供的一个用于实现临时数据计算的特殊表,它只有一个列DUMMY (VARCHAR2(1)) 字符类函数: concat--连接字符串  initcap--每个单词首字母大写  instr(s1,s2[,i][,j]--s2在s1中第j次出现时的位置,从s1的i位置开始搜索 l…

安全AI挑战者计划第三期 - 文本分类对抗攻击——No.4 F-LAB-sparrow组 比赛攻略/开源代码

阿里清华联合天池算法比赛传送链接 官方论坛本文链接 1. 提交的部分对抗样本 原始文本: (以下为辱骂场景内容,少儿不宜) 生成对抗文本: 2. 比赛思路 本次比赛为在黑盒场景下的中文文本对抗攻击,应用场…

用简单命令 检查电脑是否被安装木马(转)

一些基本的命令往往可以在保护网络安全上起到很大的作用,下面几条命令的作用就非常突出。   检测网络连接   如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是手里没有完善的工具来检测是不是真有这样的事情发生&#xff0…

JavaScript 版俄罗斯方块——转换为 TypeScript

写 JavaScript 版俄罗斯方块的目的是为试验了技术和框架。最初的版本 通过 Gulp Webpack Babel,搭建了一个 ES6 的前端构建环境;之后的一个版本 通过重构技术对模型部分进行较全面的重构,同时引入了 私有成员写法,也在重构的过程…

零基础入门数据挖掘 - 二手车交易价格预测比赛记录

零基础入门数据挖掘 - 二手车交易价格预测 阿里和Datawhale举办的比赛,非常适合入坑。 平时,抽空打打,看不进论文就打比赛吧~ 目前top-5,希望咸鱼保持住,比赛完做一份数据挖掘的总结。 还有一周&#xff…

IOS-相机、相册

1 //2 // ViewController.m3 // IOS_0301_相册和相机4 //5 // Created by ma c on 16/3/1.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import "ViewController.h"10 11 interface ViewController ()<UIActionSheetDelegate,UIImag…