当前位置: 首页 > news >正文

Mysql中的那些锁

表锁和行锁

表锁:一锁锁整张表,mysql中锁定颗粒度最大的一种,针对非索引字段加的锁。MyISAM和InnoDb都支持。

行锁:一锁只锁整行,锁定颗粒度最小,针对索引字段加的锁。MyISAM不支持,InnoDb支持。

PS:行锁是针对索引字段加的锁,如果where没有命中索引的话,可能会加表锁。

行锁的类型

记录锁:单个记录的锁,只能锁住已存在的数据,

间隙锁:锁定一个范围的行记录,不包括他本身,可以避免这个范围内插入数据。当使用的条件查询是范围时,会使用间隙锁。

临键锁:锁定一个范围的行记录,包括他本身。

PS:在InnoDb默认的可重复读的隔离级别下,默认使用的是临键锁,如果去操作的索引是主键索引或者唯一索引,会优化为记录锁。

共享锁和排他锁

也叫读写锁,行锁和表锁都有共享锁和排他锁。

共享锁:读锁,事务在读取记录时获取的锁,多个事务之间可以共享。

排他锁:写锁,事务在修改记录时获取的锁,多个事务之间不能是互斥的,不能共享。

意向锁

意向锁也分行级意向锁和表级意向锁,用来判断有没有被加锁。

意向共享锁:在加共享锁之前,要先获取意向共享锁。

意向排他锁:在加排他锁之前,要先获取意向排他锁。

相关文章:

  • 【跟着CHATGPT学习硬件外设 | 04】ADC
  • SVG XML 格式定义图形入门介绍
  • 【AI模型-机器学习工具部署】远程服务器配置Jupyter notebook或jupyter lab服务
  • kubernetes-k9s一个基于Linux 终端的集群管理工具
  • 微信小程序布局中的单位及使用
  • EXCEL 通过FILES函数获取指定路径中的所有文件名
  • Docker Desktop 在 Windows 上的安装和使用
  • 从TCP/IP协议到socket编程详解
  • 接口自动化框架搭建(四):pytest的使用
  • C++经典面试题目(十一)
  • CVE-2023-4427:Out-of-bounds access in ReduceJSLoadPropertyWithEnumeratedKey
  • 集成ES分组查询统计求平均值
  • sort函数对vector一维或者二维数组排序
  • 人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 1
  • 二、Web3 学习(区块链)
  • [译]如何构建服务器端web组件,为何要构建?
  • 10个最佳ES6特性 ES7与ES8的特性
  • angular组件开发
  • ESLint简单操作
  • linux学习笔记
  • Nacos系列:Nacos的Java SDK使用
  • PHP的类修饰符与访问修饰符
  • React+TypeScript入门
  • session共享问题解决方案
  • tweak 支持第三方库
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vim Clutch | 面向脚踏板编程……
  • Vue学习第二天
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #stm32驱动外设模块总结w5500模块
  • #每日一题合集#牛客JZ23-JZ33
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (三)终结任务
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET MVC第三章、三种传值方式
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .Net程序帮助文档制作
  • @property python知乎_Python3基础之:property
  • @Responsebody与@RequestBody
  • @vue/cli脚手架
  • [ linux ] linux 命令英文全称及解释
  • [C# WPF] 如何给控件添加边框(Border)?
  • [LeetCode]—Longest Palindromic Substring 最长回文子串