首页
学习
活动
专区
圈层
工具
发布

MySQL只改一行数据,锁这么多吗?

导读 这篇文章我想来聊聊 MySQL 的锁是怎么加上的,为啥想聊这个呢?主要是因为业务中我们或多或少都会使用到锁,毕竟锁是保障我们数据安全性的关键法宝。...01 啥时候加 1.1 显示锁 MySQL 的加锁可以分为显示加锁和隐式加锁,显示加锁我们比较好识别的,因为他往往直接体现在 SQL 中,常见的显示加锁语句主要有: ▶︎ select ... for...首先是 RC 级别,这个级别下的加锁规则是比较简单的,因为只涉及到行锁,首先我们先设计一张表 CREATE TABLE `t_db_lock` ( `id` int(11) NOT NULL,...因为这时除了加 a 上的索引,还有回表更新的操作,此时访问到的主键上的索引也会被加锁,因为是同一行,所以此时更新同样被阻塞住; ▶︎ 同样的道理,当我们去更新的 b=0 的数据对应的主键索引上也是同一条数据

60610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    只改一行语句,锁这么多?

    导读 这篇文章我想来聊聊 MySQL 的锁是怎么加上的,为啥想聊这个呢?主要是因为业务中我们或多或少都会使用到锁,毕竟锁是保障我们数据安全性的关键法宝。...01 啥时候加 1.1 显示锁 MySQL 的加锁可以分为显示加锁和隐式加锁,显示加锁我们比较好识别的,因为他往往直接体现在 SQL 中,常见的显示加锁语句主要有: ▶︎ select ... for...首先是 RC 级别,这个级别下的加锁规则是比较简单的,因为只涉及到行锁,首先我们先设计一张表 CREATE TABLE `t_db_lock` ( `id` int(11) NOT NULL,...因为这时除了加 a 上的索引,还有回表更新的操作,此时访问到的主键上的索引也会被加锁,因为是同一行,所以此时更新同样被阻塞住; ▶︎ 同样的道理,当我们去更新的 b=0 的数据对应的主键索引上也是同一条数据

    49130

    MySQL实战第十九讲-为什么我只查一行的语句,也执行这么慢?

    一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要返回大量的数据。但有些情况下,“查一行”,也会执行得特别慢。...第一类:查询长时间不返回 如下所示,在表 t 执行下面的 SQL 语句: select * from t where id=1; 查询结果长时间不返回。...语句,如果指定表 t 的话,代表的是只关闭表 t;如果没有指定具体的表名,则表示关闭 MySQL 里所有打开的表。...但是接下来,我们再看一个只扫描一行,但是执行很慢的语句。...由于 id 上有索引,所以可以直接定位到 id=1 这一行,因此读锁也是只加在了这一行上。

    1.7K30

    MySQL深入学习第十九篇-为什么我只查一行的语句,也执行这么慢?

    一般情况下,如果我跟你说查询性能优化,你首先会想到一些复杂的语句,想到查询需要返回大量的数据。但有些情况下,“查一行”,也会执行得特别慢。...第一类:查询长时间不返回 如下所示,在表 t 执行下面的 SQL 语句: select * from t where id=1; 查询结果长时间不返回。如下 图1 查询长时间不返回: ?...语句,如果指定表 t 的话,代表的是只关闭表 t;如果没有指定具体的表名,则表示关闭 MySQL 里所有打开的表。...但是接下来,我们再看一个只扫描一行,但是执行很慢的语句。...由于 id 上有索引,所以可以直接定位到 id=1 这一行,因此读锁也是只加在了这一行上。

    1.7K20

    后台只返回编号,前端如何解析成对应的文字显示

    页面效果 image.png 后台返回的数据类型 'type': 'Bi,Ea', 需要做的处理 后台返回的不同的字符串编号,每个编号对应不同的文字描述,比如说 Bi 对应消息推送应用。...前端需要对后台返回的字符串做识别判断 // template // 模板中不能直接遍历后台返回的type属性,而是绑定和遍历处理过后的 newType 属性 <el-table-column prop...objRes.records //赋值表格数据 this.tableData.forEach(item1 => { //遍历表格数据 item1.newType = [] //给表格每一行添加一个新的数组属性...用于存放解析后的编码和对应文字 const codeArr = item1.type.split(',') //把每一行的type属性通过split分解成一个数组 得到['Bi','Ea...如果 item2 的编号和 item3的code属性相等 item1.newType.push({ //就把item2 的编号 和 item3的value 赋值给每一行的新增加

    1.3K20

    MySQL实战第二十一讲-为什么我只改一行的语句,锁这么多?

    MySQL 后面的版本可能会改变加锁策略,所以这个规则只限于截止到现在的最新版本,即 5.x 系列 <=5.7.24,8.0 系列 <=8.0.13。 2....如下 图2 所示为只加在非唯一索引上的锁: 看到这个例子,你是不是有一种“该锁的不锁,不该锁的乱锁”的感觉?我们来分析一下吧。...需要注意,在这个例子中,lock in share mode 只锁覆盖索引,但是如果是 for update 就不一样了。...根据优化 1, 主键 id 上的等值条件,退化成行锁,只加了 id=10 这一行的行锁。 2. ...等值查询上MySQL的优化:索引上的等值查询,如果是唯一索引,next-key lock会退化为行锁,如果不是唯一索引,需要访问到第一个不满足条件的值,此时next-key lock会退化为间隙锁; 3

    1.2K20

    统一定制API返回格式,我只做了这几件事

    ,现在呆着的这家公司居然没有统一的API返回格式?...后端返回给前端一般情况下使用JSON格式, 定义如下 { "code": 200, "message": "OK", "data": { } } code: 返回状态码...message: 返回信息的描述 data: 返回值 定义JavaBean字段 定义状态码枚举类 @ToString @Getter public enum ResultStatus { SUCCESS...JSON格式需要返回Result才可以, 我明明返回Object可以了, 为什么要重复劳动, 有没有解决方法, 当然是有的啦, 下面我们开始优化我们的代码吧 统一返回JSON格式进阶-全局处理...是会直接抛出异常的接口,我好像没有对异常返回进行统一的处理哦 统一返回JSON格式进阶-异常处理(@ExceptionHandler)) 卧槽, 异常处理, 差点把这茬给忘了, 这个异常处理就有很多方法了

    2.5K20
    领券