mysql的锁分类:表锁和行锁和页面锁

news2024/12/26 9:23:52

一 锁的概念

1.1 锁的作用

锁是计算机协调多个进程或线程并发访问某一资源的机制在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

1.2 锁的分类

​ 为了提高数据库的并发度,每次锁定的数据范围越小越好,理论上只锁定当前操作的数据的方案会获得最大的并发度,但是管理锁也是很耗费资源的事情(涉及锁的获取、检查和释放),因此需要在并发度性能之间做取舍,这样就产生了锁粒度的概念。

锁所影响的数据的范围称作锁的粒度,锁按照操作粒度从小到大可以划分为行锁表锁页面

从对数据操作的类型

1.读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。

2.写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。

从对数据操作的粒度分:锁所影响的数据的范围称作锁的粒度,锁按照操作粒度从小到大可以划分为行锁表锁页面

二  行锁的操作

2.1 表锁的作用

1.表级锁会锁定整张表,是MySQL最基本的锁策略,能够避免死锁

2.并不依赖于存储引擎(所有的存储引擎对于表锁的策略都是一样的)

3.表锁是开销最小的锁(因为粒度大),但同时出现资源竞争的概率也高,并发性大打折扣

2.2 表级锁的S锁和X锁的使用场景

2.2 表级锁的S锁和X锁的使用场景

2.3 表锁的特点

偏向MyISAM存储引擎,开销小,加锁快;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

2.4  加锁和解锁的API

2.4.1 上锁的过程

lock table 表名字 read(write), 表名字2 read(write), 其他;

2..4.2 查看表加过的锁

show open tables;

2.4.3释放表加过的锁

     unlock tables;

2.5 表锁的使用场景案例

2.5.1 加读锁情况

2.5.2 加写锁情况

2.5.3 总结

2.6 意向锁

2.6.1 意向锁的作用

1.InnDB存储引擎支持多粒度锁,它允许行级锁表级锁共存冲突

2.意向锁就是一种不与行级锁冲突的表级锁,表示"某个事务在该表的某些行持有锁或者准备持有锁"

意向锁分为两种:

1.意向共享锁:表示事务有意向对表中的某些行添加S锁。

SELECT ... FROM t LOCK IN SHARE MODE; -- 事务想要获取行级别S锁,必须先获取表级别的IS锁。

2.意向排它锁:表示事务有意向对表中的某些行添加X锁。
SELECT ... FROM t FOR UPDATE; - 事务想要获取行级别X锁,必须先获取表级别的IX锁

2.6.2 意向锁的结论

1.InnoDB支持多粒度锁,在特定场景下行级锁表级锁可以并存

2.意向锁之间互不排斥,但除了IS和S锁兼容外,意向锁会和 表级别的 共享锁、排它锁互斥

3.IS和IX是表级别的锁,不会和行级别的S、X锁冲突,只会和上面的表级别的锁冲突

4.意向锁在保证并发性的前提下,实现了表锁和行锁共存,并且满足事务隔离性的要求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

难点解释-理解寄主机通过虚拟网络连接到虚拟机的概念

“寄主机”通过“虚拟网络”连接“虚拟机”的关键点Brainstorm 获得“虚拟机”的ip地址 ip a 确保“寄主机”能ping通“虚拟机” SSH客户端连接虚拟机 SSH客户端有很多,这里用的是XSHELL Q&A SSH连接提示超时 表明寄主机到虚拟机的网络没有通,检…

实现数据库用户校验

导入my-batis-plus依赖&#xff1a; <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </depende…

【图论C++】链式前先星(图(树)的存储)

/*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在竞赛算法学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记&#xff1a;转载需获得博主本人…

Flink--6、输出算子(连接到外部系统、文件、kafka、MySQL、自定义Sink)

星光下的赶路人star的个人主页 世间真正温煦的春色&#xff0c;都熨帖着大地&#xff0c;潜伏在深谷 文章目录 1、输出算子&#xff08;Sink&#xff09;1.1 连接到外部系统1.2 输出到文件1.3 输出到Kafka1.4 输出到MySQL&#xff08;JDBC&#xff09;1.4 自定义Sink输出 1、输…

Unity插件Xcharts3.x版本使用笔记

Unity插件Xcharts3.x版本使用笔记 官方下载链接&#xff1a;https://xcharts-team.github.io/导入Unity基本使用方式&#xff08;折线图动态添加数据&#xff09;如果想要更多的表现效果可以看官方自带的脚本&#xff0c;这里包括了官方展示案例的部分效果&#xff0c;不过没有…

Windows10操作系统部署AD

windows 10 安装配置AD 一、启用AD 1.打开控制面板—>程序—>启用或关闭windows功能 2.勾选Active Directory Lightweight Directory Services&#xff08;Active Directory 轻型目录服务&#xff09; 注&#xff1a;不同版本中英文显示有区别&#xff0c;认准AD字样就…

Learn Prompt- Midjourney案例:动漫设计

使用 Midjourney 生成动漫有两种方法&#xff1a;使用Niji模式或使用标准的 Midjourney 模型。Niji V5 是 Midjourney 的动漫专用模型。它建立在标准 Midjourney 模型的全新架构之上&#xff0c;更擅长生成命名的动漫角色。Niji V4于2023年12月发布&#xff0c;Niji V5于2023年…

uniapp中使用axios打包到小程序时报 TypeError: adapter is not a function

出现这个错误的原因是因为小程序支持的是它自己原生封装的request接口&#xff0c;它底层用的http的。 若需要使用axios的话&#xff0c;我们需要使用一个axios适配器来兼容小程序。 下面用到axios-miniprogram-adapter适配器来解决 gitHub地址&#xff1a;GitHub - bigmeow…

智能中充满了符号、逻辑、力的想象和诱惑

把智能仅仅视为物化的理性特征符号的观点忽略了智能的社会性和交互性。智能不仅仅是个体内部的智能表现&#xff0c;还包括人与人之间的互动和人机环境系统的影响。智能是人类与其环境相互作用的结果&#xff0c;受到社会文化、教育、经验等因素的影响&#xff0c;具有社会意义…

域名备案流程(个人备案,腾讯云 / 阿里云)

文章目录 1.网站备案的目的2.备案准备的材料2.1 网站域名2.2 云资源或备案授权码2.3 电子材料 3.首次个人备案准备的材料3.1 主体相关3.2 域名相关3.3 网站相关3.4 网站服务相关3.5 变更相关 4.个人备案流程4.1 登录系统4.2 填写备案信息&#x1f340; 填写备案省份&#x1f34…

sql防止连表查询后出现空行数据

sql防止连表查询后出现空行数据 防止连表查询后出现空行数据 1.在where后加&#xff1a;and t2.pk_id is not null 或者2.在返回值list上处理 List TaskItem intelligentCloudMapper.getTaskItem(params.getPkId()); TaskItem.removeAll(Collections.singleton(null)); <se…

IO流————

一、字符流 前面我们学习了字节流,使用字节流可以读取文件中的字节数据。但是如果文件中有中文,使用字节流来读取,就有可能读到半个汉字的情况,这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码,但是如果文件过大又不太合适。 所以Java专门为我们提供了另外一种…

Opengl之颜色

现实世界中有无数种颜色&#xff0c;每一个物体都有它们自己的颜色。我们需要使用&#xff08;有限的&#xff09;数值来模拟真实世界中&#xff08;无限&#xff09;的颜色&#xff0c;所以并不是所有现实世界中的颜色都可以用数值来表示的。然而我们仍能通过数值来表现出非常…

js实现动态数字滚动,插件jquery.counterup.min.js的使用方式

推荐一个常用的数字滚动动画插件&#xff0c;jquery.counterup.js 该插件可以控制动画的延迟时间和动画过渡时间。但它依赖于Waypoints.js插件来监听滚动事件。 从而实现页面滚动到数字可视窗口&#xff0c;实现让数字从零到指定数值的滚动。 使用方式 首先引入jQuery.js 引入…

解决Excel无法打开文件“xxx.xlsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式!匹配的问题

文章目录 1. 复现错误2. 分析错误3. 解决错误 1. 复现错误 今天在开发过程中&#xff0c;测试指给我一个bug&#xff0c;如下图所示&#xff1a; 于是&#xff0c;我拿到这个文件标准模板.xlsx&#xff0c;尝试使用WPS打开看看&#xff0c;如下图所示&#xff1a; 如上图所示&a…

九日集训 Leetcode 371.两整数之和

给你两个整数 a 和 b &#xff0c;不使用 运算符 和 - &#xff0c;计算并返回两整数之和。 示例 1&#xff1a; 输入&#xff1a;a 1, b 2 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;a 2, b 3 输出&#xff1a;5提示&#xff1a; -1000 < a, b < 10…

树莓派上使用kettle将文本文档导入mariadb

目录 1 连接MariaDB的前置条件 2 test.txt 3 在mariadb中创建数据库和数据表 4 在kettle中的操作 4.1 新建任务 4.2 连接数据库 4.3 文本文件输入 4.4 表输出 4.5 运行 4.6 结果 1 连接MariaDB的前置条件 首先你的mariaDB要有密码&#xff0c;我当前的用…

H3CNE

H3CNE 计算机网络概述 计算机网络定义 一组自治计算机互联的集合 计算机网络基本功能 资源共享 综合信息服务 分布式处理与负载均衡 计算机网络的类型 局域网 LAN 由用户自行建设&#xff0c;使用私有地址组建的内部网络 城域网 MAN 由运营商或大规模企业建设&am…

快速排序与冒泡排序以及代码

快速排序 快速排序&#xff08;Quicksort&#xff09;是一种常用的排序算法&#xff0c;它基于分治的思想。 时间复杂度&#xff1a;O&#xff08;nlogn&#xff09; 空间复杂度&#xff1a;O&#xff08;logn&#xff09; 快速排序的基本思想如下&#xff1a; 选择一个元素…

ffmpeg+flv视频推拉流实现(demo版)

前言 工作需要&#xff0c;记录一下前后端推拉流方案&#xff0c;基于HTTP-FLV协议&#xff0c;使用node flv.js ffmpeg进行前后端交互。 此方案为demo版&#xff0c;目的是打通前后端链路&#xff0c;项目应用正在研究中。 步骤 1.安装ffmpeg 后端推流需要借助ffmpeg流媒…