首页 > 其他分享 >select......for update会锁表还是锁行

select......for update会锁表还是锁行

时间:2023-08-17 09:46:14浏览次数:62  
标签:会锁表 DEFAULT ...... 锁行 id NULL update 主键 select

select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁。那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。没用索引/主键的话就是表锁,否则就是是行锁。

验证:

建表sql
//id为主键  
//name 为唯一索引
CREATE TABLE user (
 id INT ( 11 ) NOT NULL AUTO_INCREMENT,
 name VARCHAR ( 255 ) DEFAULT NULL,
 age INT ( 11 ) DEFAULT NULL,
    code VARCHAR ( 255 ) DEFAULT NULL,
 PRIMARY KEY ( id ),
    KEY idx_age ( age ) USING BTREE 
) ENGINE = INNODB AUTO_INCREMENT = 1570068 DEFAULT CHARSET = utf8
需要关闭自动提交,通过set @@autocommit=0; 设置为手动提交。0代表手动提交,1代表自动提交 

结合一下实例验证

实例1:

使用主键id为条件去查询,然后开启另一个事务去更新数据,更新被阻塞,加锁了,锁定要查询的id为1的行数据。图一为第一个事务,并且没有提交事务图二为第二个事务,去更新数据,被阻塞了图三为第二个事务,长时间拿不到锁报错。   

 

结果:

如果查询条件用了索引/主键,那么select ..... for update就会进行行锁。如果是普通字段(没有索引/主键),那么select ..... for update就会进行锁表。

标签:会锁表,DEFAULT,......,锁行,id,NULL,update,主键,select
From: https://www.cnblogs.com/liliuguang/p/17636766.html

相关文章

  • teamcenter 无法加载或刷新对象。请参考错误堆栈中之前的......“写访问被拒绝”
     原因:改用户没有对该item的修改权限。尝试去对属性修改时报错解释方法:1、系统管理员开旁路2、在代码里开超级权限/** *超级权限设置属性值 *@paramsession *@paramcomponent *@paramPropertyName *@parampropertyValue *@return */ publicbooleansetProp......
  • select......for update会锁表还是锁行
    select查询语句是不会加锁的,但是select.......forupdate除了有查询的作用外,还会加锁呢,而且它是悲观锁。 需要关闭自动提交,通过set@@autocommit=0;设置为手动提交。0代表手动提交,1代表自动提交。结果:如果查询条件用了索引/主键,那么select.....forupdate就会进行行锁。......
  • Dos常用命令持续更新......
    .盘符切换:盘符+冒号,然后回车.查看当前目录下的所有文件:dir,然后回车.进入当前盘符下文件目录:cd+文件目录路径,然后回车.清理屏幕:cls,然后回车.测试网络联通:ping+ip(或者域名),然后回车.退出终端:exit,然后回车.查看电脑ip:ifconfig,然后回车.创建目录:md......
  • 警惕职场PUA,远离某......
    在这个经济的寒冬,一职难求的时间节点,还是憋不住,想聊聊这个敏感的职场话题。为什么想写这篇文章,并且把前同事被PUA的事分享给大家?是因为之前悲惨的经历和他十二分的相似,也是被某阿空降过来的领导PUA到严重怀疑人生;好在现在已经走出来了。想分享给更多的新人,希望能做到提前识别,有效应......
  • c语言作业之计算1-1/2+1/3-1/4+......1/99+1/100的值
    intmain()//计算1-1/2+1/3-1/4+......1/99+1/100的值{ inti=0; doublesum=0.0; intj=1; for(i=1;i<=100;i++) { sum+=j*1.0/i; j=-j; } printf("%f",sum); return0;}输出的结果为:......
  • 面了小 100 人,90% 都背了面试题......
    有个朋友去阿里面试,面试总共花费了20天左右,包含了4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,70%的人都会载在第一轮面试,要不是他面试之前做足了准备,估计都坚持不到接下来的面试。 其实,第一轮的电话面试除了一些常规的自我介绍外,问的都是一些基......
  • 如果让我手写......
    字符串#include<iostream>#include<cstring>classMyString{private:char*m_data;size_tm_length;public:MyString():m_data(nullptr),m_length(0){}MyString(constchar*str){m_length=strlen(str);m_data=......
  • 萤石网络领跑智能锁行业发展,斩获2023葵花奖五大奖项
    葵花奖作为国内智能家居评选“奥斯卡”,是备受业界关注的重要奖项。在2023年第七届“葵花奖”智能家居评选颁奖盛典上,作为科创板智能家居上市企业的萤石网络斩获多项荣誉,品牌备受关注的智能门锁业务更是夺得五项大奖。萤石网络自2016年开始进军智能门锁行业,多年来不断地对产......
  • Emoing......
    你说星星会不会在人间放烟花的时候偷偷留下来见想见的人......夏天到了,祝你和想见的人早点见面巷子里的猫很自由却没有归宿,人生这道题怎么选都有遗憾可大家还是会爱,会坚持,会热烈,会拿真心换真心,在诸多风险里一次又一次选择相信。可是她不会…即使我不会是......
  • 升级Elasticsearch到8.7.1版本,我给自己挖了很多坑......
    转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。最近因为某些原因,需要将ES升级到8.7.1版本。之前用的ES版本比较老了,这次部署新版本ES,发现变化蛮大的,一小心又踩了一些坑,还给自己挖了一些坑......1.java版本不符合需求,es启动失败报错内......