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

  • 建表
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代表自动提交。
我们先以加了索引的age字段进行测试

我们先做一次查询,因为自动提交被我们关闭,所以在 查询之后需要我们自己手动commit

接下来我们执行update操作

我们可以看到其改变是0,会发现这条update语句并没有执行成功
接下来我们尝试更新id=1570069的数据

我们可以看到数据更新成功,从此处我们就可以看到实现了行级锁
接下来我们继续尝试更新没有使用索引的code字段

我们可以发现被锁住了,于是我们进行以下总结:

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

select......for update会锁表还是锁行相关推荐

  1. 面试官问:select......for update会锁表还是锁行?

    欢迎关注方志朋的博客,回复"666"获面试宝典 select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁 ...

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

    select -for update 除了有查询的作用外,还会加锁呢,而且它是悲观锁.那它会加表锁还是行锁?相信很多人都知道这个结论:要看是不是用了索引/主键.没用索引/主键的话就是表锁,否则就是是行 ...

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

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

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

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

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

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

  6. select .... for update究竟锁表还是锁行?

    文章目录 介绍 实例验证 实例前准备数据 实例1--验证通过主键索引查询会锁行 实例2--验证通过普通索引作为查询条件会锁行 实例3--验证查询条件不命中索引会锁表 实例4--验证联合索引匹配到第一个 ...

  7. oracle update 锁表还是锁行,for update造成的Oracle锁表与解锁

    我遇到的情况: 当使用select语句查询表时,后面跟着for update , select * from table for update 当修改表中数据,但是没有commit就关掉PL/SQL, ...

  8. Oracle锁表 行级锁 表级锁 行级锁

    2019独角兽企业重金招聘Python工程师标准>>> Oracle锁表  行级锁  表级锁 ---- 行被排他锁定 ----在某行的锁被释放之前,其他用户不能修改此行       ...

  9. mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍

    页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...

最新文章

  1. 阿里云发布云电脑“无影”,「传统桌面云」市场将被颠覆?
  2. Ubuntu 14.04 更换为阿里云源
  3. 解神者php奥义高阶,《解神者》角色月曦九攻略技能解析和兽主推荐
  4. 中移4G模块-ML302-OpenCpu开发-服务器搭建
  5. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题
  6. test title
  7. Lesson 1- exchange 2010 installing
  8. 云痕大数据 家长登录_智学网家长学生查分入口:www.zhixue.com
  9. 螺母_常用硬件的种类以及选用_day15
  10. 35岁的大龄程序员都去哪里了?
  11. Java实现四则运算
  12. 软件测试之验收测试三要点
  13. js制作走马灯和选项卡
  14. 【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法
  15. class07:Express框架、中间件
  16. Crumb -面包屑状的嵌套按钮
  17. 网络编程中同步与异步,IO阻塞与非阻塞总结
  18. 常见HTTP请求错误
  19. 【CTF-misc】凯撒大帝在培根里藏了什么
  20. 作业盒子端AndrOid,作业盒子小学老师端

热门文章

  1. 调研分析:全球与中国木姜油市场现状及未来发展趋势
  2. Linux【基础篇】—— linux操作系统目录结构、运行级别介绍
  3. 2020-12-21 PMP 群内练习题 - 光环
  4. 「家电观察室」 4K与VR能否占据客厅娱乐?
  5. 2022namo div1 平方计数 (数论)
  6. Server Htmlencode和Server HtmlDecode的用法
  7. 程序员搞笑对联_献给程序员,经典幽默之恶搞对联
  8. Matlab FFT变换细节(信号采样频率,FFT变换点数,频率分辨率)
  9. PyTorch:数据加载,数学原理,猫鱼分类,CNN,预训练,迁移学习
  10. Pandas 日期数据处理