MySQL 锁的一些简单概念

1. 锁的粒度

在MySQL中,只要有多个请求需要在同一时刻修改数据,都会产生并发控制的问题。而锁的作用可以保证同一资源能被某个请求唯一使用。

加锁是会消耗系统资源的,包括获得锁、检查锁是否已解除、释放锁等等操作,都会增加系统的开销。

为了平衡锁的开销和数据的安全性,MySQL对锁的粒度提供了多种方式,主要分为表锁和行级锁。

表锁(table lock):指在加锁时锁定整张表。

行级锁(row lock):指在加锁时锁定某一行。

2. 共享锁和排他锁

在InnoDB存储引擎中,锁的类型通常分为共享锁和排他锁。

共享锁(shared lock):也叫读锁(read lock),指多个请求在同一时刻可以同时读取同一个资源,互相不干扰。

排他锁(exclusive lock):也叫写锁(write lock)。一个写锁会阻塞其他的写锁和读锁,这样能确保一定的时间内,只有一个请求能执行写入操作,防止其他请求读取或写入同一资源。

示例1:

事务T1对某一行R1进行了共享锁的加锁操作时,事务T2也可以对此行R1进行共享锁的加锁操作,但事务T2不可以对此行R1进行排他锁操作。

示例2:

事务T1对某一行R1进行了排他锁的加锁操作时,事务T2不能对此行R1进行任一类型的锁的请求,事务T2必须等待事务T1释放对行R1的锁定才能进行后续的加锁操作。

3. 死锁

死锁是指多个事务在同一个资源上互相占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。比如多个事务以不同的顺序锁定相同的资源就会产生死锁。

示例:

事务T1按顺序修改R1和R2行,事务T2按顺序修改R2和R1行,当2个事务同时执行,在执行第2行时发现此行都已经被别的事务进行了排他锁操作,就会陷入恶性循环中。

解决方案:

在InnoDB中的方案是将最少行级排他锁的事务进行回滚。

4. 参考资料

Innodb中的锁:https://dev.mysql.com/doc/refman/5.6/en/innodb-locking.html

(0)

相关推荐

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

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

  • 共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据

    来自:CSDN,作者:T-Birds 链接:https://blog.csdn.net/weixin_36634753/article/details/90815755 共享锁(S锁): 又称为读锁, ...

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

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

  • Mysql之锁、事务绝版详解

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

  • 线上故障如何快速排查?来看这套技巧大全

    文末福利:轻量应用服务器优惠,新用户专享. 前言 线上定位问题时,主要靠监控和日志.一旦超出监控的范围,则排查思路很重要,按照流程化的思路来定位问题,能够让我们在定位问题时从容.淡定,快速的定位到线上 ...

  • 小白科普:死锁

    什么叫死锁? 死锁指多个线程因竞争资源而造成的一种互相等待,若无外力作用,这些进程都将无法向前推进. 业务场景可以分为两大类,单用户业务和用户间业务,一般单用户业务很少出现死锁. 死锁的现象? 在DB ...

  • mysql的锁机制详解

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

  • 才知道:原来“双色”锁边这么简单,效果精致又漂亮,很实用!

    才知道:原来"双色"锁边这么简单,效果精致又漂亮,很实用!

  • MySQL数据库:数据的概念

    基本定义 数据:是数据库总存储的基本对象 定义:描述客观事物的符号记录 种类:数字.文字.图形.图像.声音等 数据库:DB 存储数据的集合 数据库管理系统:DBMS 用户和操作系统之间的一层数据管理软 ...

  • [MySQL] mysql中bitmap的简单运用

    bitmap就是在一个二进制的数据中,每一个位代表一定的含义,这样最终只需要存一个整型数据,就可以解释出多个含义. 业务中有一个字段专门用来存储用户对某些功能的开启和关闭,如果是传统的思维,肯定是建一 ...

  • 面试命中率90%的点——MySQL锁

    精品技术文章准时送上! 一.对MySQL的锁的了解 当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制. 就像酒店的房间,如果大家随意进出, ...

  • Java分布式锁的概念以及使用优点

    普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问的变量或代码片段叫做临界区域,我们需要控制线程一个一个的顺序执行,否则会出现并发问题. 设置一个各个线程都能看的见的标志 ...

  • 概念是对一类事物的简化思考:抓住事物的本质属性,就抓住简单了

     认知框架 2020-06-21优质教育领域创作者 已关注 所属专栏:玩转概念,敲开学习与思考的基础之门! 概念是对一类事物化繁为简的一种思维方式,一类事物可能各有各样,在表面上看,是很复杂的.从一 ...

  • 越简单越高级,10款优雅精致又时尚减龄的锁骨头,满满的时髦感

    锁骨头是女生最喜欢的一款中长发发型,也是一款货真价实的网红头.发型的长度恰好在锁骨位置的上下,显得性感迷人.锁骨长度的发型可以设计成直发效果或卷发效果,这就需要结合自己的脸型,气质,性格以及穿搭风格来 ...

  • PP-DAX入门:行上下文,先来了解一下简单的概念

    小勤:订单明细表里要添加每样产品的金额怎么办?现在有单价和数量,能不能直接乘出来啊? 大海:这个跟Excel里操作基本一样,你在"添加列"那里写等式就行. 小勤:嗯,在Power ...

  • 何家村窖藏出土的银锁是干吗的,到底有什么秘密?原因其实很简单

    何家村窖藏的发现可以说是非常令人震惊的,特别是对于考古界来说,那简直是史诗级别的发现.谁能知道那几个大瓮中竟然一次性出土千余件文物,而且这些文物很多都堪称是唐朝时期的极品文物,换做现代来说就是国宝,如 ...