iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中InnoDB锁模式与锁类型有哪些
  • 856
分享到

MySQL中InnoDB锁模式与锁类型有哪些

2024-04-02 19:04:59 856人浏览 泡泡鱼
摘要

本篇内容介绍了“Mysql中InnoDB锁模式与锁类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本篇内容介绍了“Mysql中InnoDB模式与锁类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

⒈InnoDB事务锁的构成
INNODB锁类型格式为:lock_mode|lock_type
例如:LOCK_X|LOCK_GAP|LOCK_REC,含义为这是一个写锁,他锁定的是一间隙(我们通常说的GAP lock),锁定的是一条记录(LOCK_REC)。
⒉InnoDB锁模式(lock_mode)
⑴锁模式类型
    锁模式主要用来判断锁的兼容性
    
    enum lock_mode {
            LOCK_IS = 0,   
            LOCK_IX,       
            LOCK_S,        
            LOCK_X,        
            LOCK_AUTO_INC, 
            LOCK_NONE,  
            LOCK_NUM = LOCK_NONE,
            LOCK_NONE_UNSET = 255
    };
⑵锁模式兼容性矩阵
    static const byte lock_compatibility_matrix[5][5] = {
    
     {  TRUE,  TRUE,  TRUE,  FALSE,  TRUE},
     {  TRUE,  TRUE,  FALSE, FALSE,  TRUE},
     {  TRUE,  FALSE, TRUE,  FALSE,  FALSE},
     {  FALSE, FALSE, FALSE, FALSE,  FALSE},
      {  TRUE,  TRUE,  FALSE, FALSE,  FALSE}
    };
    为了清晰,画出如下矩阵图(吐槽:这ITPUB缩进功能太差了,我下面的图片缩进不了):

⒊InnoDB锁类型(lock_type)
⑴InnoDB锁类型包括如下(锁类型表示施加锁的范围,是间隙(LOCK_GAP),还是记录(LOCK_REC_NOT_GAP)或者间隙加记录(LOCK_ORDINARY),对象是记录(LOCK_REC)还是表(LOCK_TABLE)或者等待(LOCK_WaiT))
    #define LOCK_WAIT    256  
    #define LOCK_ORDINARY   0
    #define LOCK_GAP  512 
    #define LOCK_REC_NOT_GAP 1024
    #define LOCK_INSERT_INTENTioN 2048
    #define LOCK_TABLE      16     
    #define LOCK_REC        32     
    #define LOCK_MODE_MASK  0xFUL 
    #define LOCK_TYPE_MASK  0xF0UL

⑵InnoDB锁类型冲突分析及矩阵
    ①源码分析注释:
        if ((lock_is_on_supremum || (type_mode & LOCK_GAP))
                    && !(type_mode & LOCK_INSERT_INTENTION)) {
            
            return(FALSE);
        }
        //不可能是LOCK_GAP,则只有LOCK_ORDINARY与LOCK_REC_NOT_GAP不等待LOCK_GAP
        //
        if (!(type_mode & LOCK_INSERT_INTENTION)&& lock_rec_get_gap(lock2)) {
            return(FALSE);
        }
        //LOCK_GAP&LOCK_INSERT_INTENSION 不等待LOCK_REC_NOT_GAP
        /
        if ((type_mode & LOCK_GAP)&& lock_rec_get_rec_not_gap(lock2)) {
                    return(FALSE);}
        //*没有锁类型会等待意向锁*
        if (lock_rec_get_insert_intention(lock2)) {
                return(FALSE);}
    ②InnoDB锁类型冲突矩阵(注意,锁类型冲突通常是在相同的锁模式下的锁类型冲突,这里将上面的代码冲突画成图):

mysql中InnoDB锁模式与锁类型有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中InnoDB锁模式与锁类型有哪些

本文链接: https://www.lsjlt.com/news/64622.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中InnoDB锁模式与锁类型有哪些
    本篇内容介绍了“MySQL中InnoDB锁模式与锁类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • MYSQL中锁的模式与类型有哪些
    本篇内容主要讲解“MYSQL中锁的模式与类型有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MYSQL中锁的模式与类型有哪些”吧!在日常开发工作中,我们几乎...
    99+
    2024-04-02
  • MySQL InnoDB锁类型及锁原理实例解析
    目录锁共享锁排他锁意向锁记录锁间隙锁临键锁死锁死锁产生条件行锁发生死锁表锁发生死锁锁的释放事务阻塞死锁的避免锁的日志行锁的原理不带任何索引的表带主键索引的表带唯一索引的表结论1.表必定有索引2.唯一索引数据行加锁,主键索...
    99+
    2022-11-27
    MySQL InnoDB锁类型锁原理 MySQL InnoDB 锁
  • mysql意向锁的类型有哪些
    这篇文章主要介绍“mysql意向锁的类型有哪些”,在日常操作中,相信很多人在mysql意向锁的类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql意向锁的类型有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • ​MySQL数据库中的锁有哪些类型
    这篇文章给大家分享的是有关MySQL数据库中的锁有哪些类型的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。MySQL数据库中的锁有共享锁,排他锁,行锁,表级锁,行级锁以及页面锁。1...
    99+
    2024-04-02
  • MySQL中有哪些锁
    本篇内容介绍了“MySQL中有哪些锁”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!普通锁InnoDB 实现...
    99+
    2024-04-02
  • MySQL锁及分类有哪些
    今天小编给大家分享一下MySQL锁及分类有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所...
    99+
    2024-04-02
  • 从锁的类别角度讲,MySQL都有哪些锁
    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业...
    99+
    2023-10-21
    mysql android 数据库
  • MongoDB中使用哪些类型的锁
    这篇文章主要介绍MongoDB中使用哪些类型的锁,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MongoDB使用多粒度锁,允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合级别下实现自己的并发控制(例如,在...
    99+
    2023-06-14
  • mysql中有哪些粒度锁
    这篇文章主要介绍了mysql中有哪些粒度锁的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql中有哪些粒度锁文章都会有所收获,下面我们一起来看看吧。1、表锁表锁是指锁定时锁定整个表,下一个事务访问该表时,必...
    99+
    2023-06-30
  • Java中的锁有哪些分类
    今天就跟大家聊聊有关Java中的锁有哪些分类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重...
    99+
    2023-05-31
    java ava
  • mysql中属性锁有哪些
    mysql中属性锁有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、共享锁也叫读锁,简称S锁;当一个事务为数据添加读锁时,其他事务只能为数据添加读锁,而不能为数据添加写锁...
    99+
    2023-06-14
  • MySQL数据库中有哪些锁
    这篇文章主要介绍“MySQL数据库中有哪些锁”,在日常操作中,相信很多人在MySQL数据库中有哪些锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库中有哪些锁”...
    99+
    2024-04-02
  • MySQL中有哪些锁与事务隔离级别
    本篇文章为大家展示了MySQL中有哪些锁与事务隔离级别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  1、概述  (1)锁的定义  锁是计算机协调多个进程或线程并...
    99+
    2024-04-02
  • MySQL中有哪些加锁场景
    MySQL中有哪些加锁场景,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如下图所示,数据库的隔离等级,SQL 语句和当前数据库...
    99+
    2024-04-02
  • mysql表锁和行锁有哪些区别
    小编给大家分享一下mysql表锁和行锁有哪些区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! Mysql有很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁;这...
    99+
    2024-04-02
  • RR与RC隔离级别下MySQL不同的加锁解锁方式有哪些
    小编给大家分享一下RR与RC隔离级别下MySQL不同的加锁解锁方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!|  RC与RR隔离级别下MySQL不同的加锁解锁方式MyS...
    99+
    2024-04-02
  • mysql中的粒度锁有哪些
    这篇文章将为大家详细讲解有关mysql中的粒度锁有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、表锁表锁是指锁定时锁定整个表,下一个事务访问该表时,必须等到上一个事务解除锁定后再访问...
    99+
    2023-06-14
  • MySQL单表模拟锁的有哪些场景
    这篇文章主要介绍MySQL单表模拟锁的有哪些场景,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   在MySQL中对于并发,锁问题总是会有很多值得讨论的地方,但是通常来说...
    99+
    2024-04-02
  • Oracle中有哪些锁处理方式
    本篇文章为大家展示了Oracle中有哪些锁处理方式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、查询锁情况select sid,serial...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作