为了保证数据并发访问时的一致性和有效性,任何一个数据库都存在锁机制

锁机制的优劣直接影响到数据库的并发处理能力和系统性能,所以锁机制也就成为了各种数据库的核心技术之一。

锁机制是为了解决数据库的并发控制问题而产生的。如在同一时刻,客户端对同一个表做更新或查询操作,为了保证数据的一致性,必须对并发操作进行控制。同时,锁机制也为实现 MySQL 的各个隔离级别提供了保证。

可以将锁机制理解为使各种资源在被并发访问时变得有序所设计的一种规则。

如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库显得尤其重要,也更加复杂。本节我们先简单介绍一下锁机制及常见的锁类型。

按锁级别分类,可分为共享锁、排他锁和意向锁
按锁粒度分类,可分为行级锁、表级锁和页级锁

下面我们先介绍共享锁、排他锁和意向锁。

1. 共享锁

共享锁的代号是 S,是 Share 的缩写,也可称为读锁。是一种可以查看但无法修改和删除的数据锁

共享锁的锁粒度是行或者元组(多个行)。一个事务获取了共享锁之后,可以对锁定范围内的数据执行读操作。会阻止其它事务获得相同数据集的排他锁。

2. 排他锁

排他锁的代号是 X,是 eXclusive 的缩写,也可称为写锁,是基本的锁类型。

排他锁的粒度与共享锁相同,也是行或者元组。一个事务获取了排他锁之后,可以对锁定范围内的数据执行写操作。允许获得排他锁的事务更新数据,阻止其它事务取得相同数据集的共享锁和排他锁。

如有两个事务 A 和 B,如果事务 A 获取了一个元组的共享锁,事务 B 还可以立即获取这个元组的共享锁,但不能立即获取这个元组的排他锁,必须等到事务 A 释放共享锁之后才可以。

如果事务 A 获取了一个元组的排他锁,事务 B 不能立即获取这个元组的共享锁,也不能立即获取这个元组的排他锁,必须等到 A 释放排他锁之后才可以。

3. 意向锁

为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB 还有两种内部使用的意向锁。

意向锁是一种表锁,锁定的粒度是整张表,分为意向共享锁(IS)和意向排他锁(IX)两类。

意向共享锁表示一个事务有意对数据上共享锁或者排他锁。“有意”表示事务想执行操作但还没有真正执行。

锁和锁之间的关系,要么是相容的,要么是互斥的。

  • 锁 a 和锁 b 相容是指:操作同样一组数据时,如果事务 t1 获取了锁 a,另一个事务 t2 还可以获取锁 b;
  • 锁 a 和锁 b 互斥是指:操作同样一组数据时,如果事务 t1 获取了锁 a,另一个事务 t2 在 t1 释放锁 a 之前无法释放锁 b。

锁模式的兼容情况
其中共享锁、排他锁、意向共享锁、意向排他锁相互之间的兼容/互斥关系如下表所示,其中 Y 表示相容,N 表示互斥。

如果一个事务请求的锁模式与当前的锁兼容,InnoDB 就将请求的锁授予该事务;反之,如果两者不兼容,该事务就要等待锁释放。

为了尽可能提高数据库的并发量,需每次锁定的数据范围越小越好,越小的锁其耗费的系统资源越多,系统性能下降。为在高并发响应和系统性能两方面进行平衡,这样就产生了“锁粒度”的概念。

7、 MySQL锁机制:数据库核心技术之一相关推荐

  1. 大厂面试官必问的Mysql锁机制

    前言 前几天有粉丝和我聊到他找工作面试大厂时被问的问题,因为现在疫情期间,找工作也特别难找.他说面试的题目也比较难,都偏向于一两年的工作经验的面试题. 他说在一面的时候被问到Mysql的面试题,索引那 ...

  2. mysql三锁,mysql锁机制之表锁(三)

    顾名思义,表锁就是一锁锁一整张表,在表被锁定期间,其他事务不能对该表进行操作,必须等当前表的锁被释放后才能进行操作.表锁响应的是非索引字段,即全表扫描,全表扫描时锁定整张表,sql语句可以通过执行计划 ...

  3. 聊聊大厂面试官必问的 MySQL 锁机制

    前言 前几天有粉丝和我聊到他找工作面试大厂时被问的问题,因为现在疫情期间,找工作也特别难找.他说面试的题目也比较难,都偏向于一两年的工作经验的面试题. 他说在一面的时候被问到Mysql的面试题,索引那 ...

  4. 11. mysql锁机制_深入探讨MySQL锁机制

    MySQL锁机制究竟是怎样的呢?这是很多人都提到过的问题,下面就为您详细介绍MySQL锁机制方面的知识,希望可以让您MySQL锁机制有更多的了解. 当前MySQL已经支持 ISAM, MyISAM, ...

  5. 面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁

    腾讯云数据库负责人林晓斌说过:"我们面试MySQL同事时只考察两点,索引和锁".言简意赅,MySQL锁的重要性不言而喻. 本文通过同事"侨总"的一场面试,带你通 ...

  6. 第 4 章 MySQL 锁机制

    第 4 章 MySQL 锁机制 1.概述 1.1.锁的定义 锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也 ...

  7. [转]MySQL锁机制,行锁竟然加在索引上!!!

    原文作者qq_40174198 原文连接:MySQL锁机制,行锁竟然加在索引上!- https://blog.csdn.net/qq_40174198/article/details/11183548 ...

  8. Mysql锁机制及原理简析

    Mysql锁机制及原理简析 一.前言 1.什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制. 锁保证数据并发访问的一致性.有效性: 锁冲突也是影响数据库并发访问性能的一个重要因素. 锁是 ...

  9. MySQL锁机制:高并发场景下该如何保证数据读写的安全性?

    锁!这个词汇在编程中出现的次数尤为频繁,几乎主流的编程语言都会具备完善的锁机制,在数据库中也并不例外,为什么呢?这里牵扯到一个关键词:高并发,由于现在的计算机领域几乎都是多核机器,因此再编写单线程的应 ...

  10. MySql锁机制(全网最全、最详细、最清晰)

    1.MySql锁机制 锁机制的作用: 解决因为资源共享,而造成的并发问题. 没有锁机制时: 例如一号用户和二号用户都要去买同一件商品(假如这件商品是一件衣服),一号用户手速稍微快了一些,于是就先买到了 ...

最新文章

  1. C# 正则表达式验证
  2. leetcode 刷题142 143
  3. 距离向量路由环路解决的方法.
  4. 【地理建模】现代地理学中的数学方法:主成分分析法案例详解
  5. 算法设计与分析——贪心算法——最优装载问题
  6. php数据库备份脚本
  7. xampp启动Apache报错 1、Error: Apache shutdown unexpectedly. 2、Unclean shutdown of previous Apache run?
  8. 第三章:react 应用( 基于 react )
  9. Java学习笔记1.2.1 使用Java集成开发环境 - Eclipse
  10. Rsync 实现远程同步
  11. FSM有限状态机(三段式)-Verilog实现
  12. 不完美破解四川电信中兴B860A高安机顶盒
  13. Dorado7使用常见问题,不定时持续更新。
  14. 两阶段最小二乘法原理_两阶段最小二乘法第一阶段为什么加入原模型外生变量...
  15. java info()方法_Java Provider getInfo()用法及代码示例
  16. “贵人”相助,亚马逊云科技APN成员乘风破浪
  17. 怎么从身份证号码批量提取出生年月日?
  18. 群晖docker火狐_群晖docker安装chrome浏览器_动漫台
  19. iOS 相册,图片裁剪工具(附demo)
  20. 程序员应该常去的网站

热门文章

  1. NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化、过程全记录
  2. DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理
  3. AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
  4. dockerfile centos+jdk+时区设置
  5. phpcms黄页,不能选择行业。解决办法
  6. eclipse 出现 jar包找不到 问题记录
  7. WIndows via C/C++ 学习(12)权限上下文
  8. GML、SVG、VML的比较
  9. linux下remove函数
  10. ST17H26的PWM模块