mysql 行级锁问题

线上碰到存储过程死锁问题了,开始以为非主键查询 for update 会导致表锁,后来经过测试 innodb下for update索引生效的情况下 根据索引字段查询是行级锁,会将整个结果集进行上锁,直到事务结束。

错误地方进行一些修正,一般情况的确是将索引的结果集进行上锁,但是由于表过大的情况,mysql为了性能自动优化将索引附近的结果集全部进行上锁。

具体实验过程可以看https://blog.csdn.net/qq_31975227/article/details/103710018,自己做一遍也能实验出来。

但是存储过程死锁的问题还是没有解决,不过该存储过程只是进行内存统计数据的落库,所以不应该上锁。虽然程序是node调用,但是也不会出现执行顺序问题,如果出现了执行顺序问题加了行级锁也是没有用的,又不是在源数据进行加减等计算操作,计算操作都在内存完成了,最后只进行了落库操作。(来至个人的吐槽,我没办法说法领导,后来和领导沟通说明白了问题)

死锁的问题通过分析死锁日志文件解决了,由于上面一块错误的认识。一直认为两个非唯一索引可以命中单条记录,其实mysql为了性能命中了多条。

一个简单的update语句,update ? where  id1=1 and id2=2 id1和id2 都是非唯一索引,这时有的语句会对因为优化导致上锁其他索引周边的数据条目,这时他会等待内建唯一索引的锁,而同样的语句会对内建唯一索引加锁,等待id1 或者id2的锁,出现同一条语句回环等待锁的释放,导致死锁发生。

以后还是需要多看一些数据库方面的书籍,对原理性知识了解的更多一些。

(0)

相关推荐

  • 万字总结 MySQL核心知识,赠送25连环炮

    回复"000"获取大量电子书 前言 大家好,我是老田,之前写过 JVM.并发编程连环炮.然后有很多小伙伴私下找我就我继续把MySQL的连环炮整理出来,但是由于本人比较懒,又加上最近 ...

  • Mysql之锁、事务绝版详解

    一 锁的分类及特性 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则.对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能 ...

  • 最新MySql数据库面试题总结(值得收藏)

    linux服务器开发相关视频解析: 腾讯.阿里等大厂面试,不了解这些MySQL技术,何以征服面试官 linux后台开发面试必备技能--锁,原子操作,CAS 数据库基础知识 为什么要使用数据库 数据保存 ...

  • mysql的锁机制详解

    这段时间一直在学习mysql数据库.项目组一直用的是oracle,所以对mysql的了解也不深.本文主要是对mysql锁的总结. Mysql的锁主要分为3大类: 表级锁:存储引擎为Myisam.锁住整 ...

  • 美团面试:MySQL中有哪些锁?当时我就懵逼了!

    美团面试:讲清楚MySQL结构体系,立马发offer 美团面试:慢SQL有遇到过吗?是怎么解决的? 美团面试:String s = new String("111")会创建几个对象 ...

  • oracle的行级锁与表级锁

    oracle的行级锁与表级锁

  • SQL Server 中 ROWLOCK 行级锁

    一.ROWLOCK的使用 1.ROWLOCK行级锁确保,在用户取得被更新的行,到该行进行更新,这段时间内不被其它用户所修改.因而行级锁即可保证数据的一致性,又能提高数据操作的并发性. 2.ROWLOC ...

  • MySQL行锁、表锁、间隙锁详解

    前言 我们前几篇讲了索引是什么,如何使用explain分析索引使用情况,如何去优化索引,以及show profiles分析SQL语句执行资源消耗的学习.今天我们来讲讲MySQL的各种锁,这里存储引擎我 ...

  • 【MySQL笔记】正确的理解MySQL的乐观锁,悲观锁与MVCC

    正确的理解MySQL的乐观锁,悲观锁与MVCC 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 !首先声明,MySQL的测试环境是5.7 前提概念 数据库并发的三种场 ...

  • 利用Power BI行级安全性,限制用户访问权限

    Power BI报告有多种分享协作方式,不仅可以让用户查看报告的所有数据,还可以根据用户角色进行数据限制,让特定用户只查看部分与之相关的数据. 按角色分享用到的就是PowerBI中的行级安全性(Row ...

  • Power BI行级安全性三种常见的角色规则设置

    上篇文章介绍了PowerBI行级安全性设置的一般步骤,本文再继续介绍一些常用的权限管理角色的设置. 仍然以下面这个PowerBI报表和业务人员张三为例, 前面介绍的是张三负责上海地区的业务,下面根据他 ...

  • 如何识别A级锁B级锁和C级锁

    防盗门锁芯级别:在市面上使用的防盗门锁芯基本上分三级,即A级.B级.C级. 1.A级锁:市面上A级防盗锁钥匙主要有一字钥匙和十字钥匙.A级锁芯内部结构非常简单,仅限于弹子的变化,弹子槽少而浅.防技术性 ...

  • mysql 行转列,列转行

    mysql 行转列,列转行