一、正常查询

在4个事务隔离级别中,除了在串行化(Serializable)时会加共享锁,其他的都不加锁,即快照读。

二、加了锁的查询

加锁select主要是指:

  • select ... for update

  • select ... in share mode

1.当使用唯一索引来搜索唯一行的语句时,使用记录锁(record lock)。如:

select * from t where id = 10  for update; # id是唯一索引列

2.其他情况,包括id列没有索引或者是非唯一索引又或者是搜索条件里有多个查询条件(使每个列都有唯一索引),则使用间隙锁与临键锁。

临键锁是间隙锁和记录锁的组合。

三、update和delete

1. 当使用唯一索引列确定的唯一数据行上进行的update/delete,也使用记录锁:

update t set number=10 where id=1;

2. 其他情况,包括id列没有索引或者是非唯一索引又或者是搜索条件里有多个查询条件(使每个列都有唯一索引),加排他临键锁(exclusive next-key lock)。

注意:如果update的是聚集索引记录,则对应的二级索引记录也会被隐式加锁,这是由InnoDB索引的实现机制决定的:二级过引的叶子上存的是聚集索引的主键值,当检索二级索引时,会二次扫描聚集索引。

四、insert

insert会用排它锁封锁被插入的索引记录,然后在插入区间加插入意向锁(insert intention lock)。

一分钟明白各种SQL语句加的什么锁——《深究Mysql锁》相关推荐

  1. mysql sql语句 参数化_C#参数化执行SQL语句,防止破绽攻击本文以MySql为例【20151108非查询操作】_mysql...

    C#参数化执行SQL语句,防止漏洞攻击本文以mysql为例[20151108非查询操作] 为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果 ...

  2. 五分钟了解Mysql的行级锁——《深究Mysql锁》

    延伸阅读: 三分钟了解Mysql的表级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  3. 三分钟了解Mysql的表级锁——《深究Mysql锁》

    延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  4. mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》

    延伸阅读: 五分钟了解Mysql的行级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  5. 一分钟深入Mysql的意向锁——《深究Mysql锁》

    延伸阅读: 三分钟了解Mysql的表级锁 五分钟了解Mysql的行级锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  6. oracle sql语句加减,实现四则运算的一条sql语句

    实现四则运算的一条sql语句 1.建立一个测试表 create table mar_test( id number, text varchar2(200)) insert into mar_Test ...

  7. 美团:这个 SQL 语句加了哪些锁?

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  8. mysql添加索引的方法(Navicat可视化加索引和sql语句加索引)

    使用索引的场景: 阿里云日志里出现了慢sql 然后发现publish_works_id字段会经常用于一些关联,所以决定把这个字段加上索引,优化sql 可视化navicat操作字段加索引,选择字段所在的 ...

  9. 正确加载MySQL驱动的语句_使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法...

    用Oracle SQL Developer时遇到no ocijdbc11 in java.library.path怎么办 不是配置环境变量,而是去选项里面,添加数据库的驱动 jdbc的驱动没有在cla ...

最新文章

  1. LeetCode实战:合并两个有序链表
  2. 【old】mapX距离工具源码,delphi7+mapx5.0
  3. sed 正则表达式【MAC地址】GLPI转换华为交换机MAC格式
  4. 2020年 HackerEarth 调查:Go 语言成为最受欢迎的语言 开发者最关心职业发展路径...
  5. webpack指南-webpack入门-webpack的安装
  6. linux怎么还原bak文件,Linux restore命令:还原dump操作备份下的文件、目录或分区...
  7. Spring Cloud Consul 基础使用介绍
  8. 【Python】获取星期字符串
  9. mysql拒绝访问root用户_Linux部署MySql数据库(超简单)
  10. CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)
  11. leetcode先刷_Maximum Subarray
  12. win10 android4.4 驱动,ST-LINK/V2驱动win10版
  13. 三点估算法_三点估算/PERT历时估算
  14. NB-IoT:它是如何工作的?第2部分
  15. IP、网关、端口、网段、子网掩码概念区别
  16. 网件路由器使用计算机mac,网件路由器怎么ip与mac绑定(2)
  17. linux连接oracle的日志,linux shell脚本连接oracle查询数据插入文件和日志文件中
  18. 软件测试面试题之用例设计题
  19. Android 蓝牙学习
  20. 第5模块闯关CSS练习题

热门文章

  1. X86汇编——简易通讯录
  2. C语言练习题——动态数组
  3. 【Web安全】JSP内存马研究
  4. OpenRASP xss算法的几种绕过方法
  5. Windows x64内核学习笔记(五)—— KPTI(未完待续)
  6. 【Clickhouse】问题记录
  7. 7、使用CallableStatement接口调用存储过程
  8. 4、使用PreparedStatement接口实现增,删,改操作(常用)
  9. 1.8 Arrays工具类
  10. 项目: 用Easyx绘制围棋和象棋的棋盘