MYSQL--锁机制*

news2024/11/16 22:32:40

一.对锁机制的大概介绍:

        1.大概的来说,MYSQL当中的锁实际上就是合理的管理多个服务器对于同一个共享资源的使用,是计算机协调多个进程或者是线程并发访问某一资源的机制(避免争抢资源的现象发生)

        2.在数据库当中,数据是一种可以供许多的用户进行共享使用的资源,如何保证数据并发访问的一致性,有效性是所有的数据库必须进行解决的一个关键问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来讲,锁对于数据库显得非常的重要,相同的,也更加的复杂

二.锁的大概分类

        1.从对于数据操作的力度区分:

1>表锁:操作的时候会对于整个表进行锁定

2>行锁,操作时,会锁定操作的行

        2.从对于数据操作的类型进行区分:

1>读锁(共享锁) :针对于同一份的数据,多个的读取操作可以同时的进行,并且并不会相互的有所影响(前提是并没有任何的更改数据操作)

2>写锁(排它锁) :在当前操作尚未完成之前,会阻断其他的读锁以及相应的写锁

三.MYSQL的锁机制:

        相比于其他的锁,MYSQL的锁机制比较的简单,最显著的特征就是针对不同的存储引擎有不同的锁机制

四:不同存储引擎的操作演示:

        1>MYISAM存储引擎:

        因为MYISAM仅仅只支持表锁,所以仅仅只讲解表锁得相关操作

        1.读锁:(lock table tablename read)

                进行读锁之后,发现两个都能够对这个表进行相应的数据查询,但是无法进行切换到其他的表以及进行相应的数据添加和修改.同时的两个都能够对于同一张表进行读锁的操作,不相冲突

                一旦加了读锁,就必须查看当前的表,不能对于其他的表进行操作,除非解除读锁(unlock tables)

        2.写锁(lock table test1 write):

        在左边加入了写锁之后,左边可以正常的进行查询当前锁表,并且进行一些修改,但是右边无法对其进行任何得操作,比如图中得查询操作,也会因为被上了写锁而让右边对其得查询被挂起,无法进行下去!

        通俗得说,写锁就是占用了一个其他任何人都无法进入得空间,仅仅只有当事人可以对其进行一定得操作,其他人都不能,解除写锁之后方可.并且,写锁仅仅只能一个服务器单独得针对一个表,而不能像读锁一样可以多个都进行添加锁

        2>InnoDB存储引擎:

        InnoDB的表锁跟MYISAM的大致上都是一样的,所以就不再概述,在这里主要讲解行锁的相关操作:

        同时为了方便观察,建议关闭事务的自动提交!

        1.行锁的特点:

        偏向于INNODB,开销比较的大,并且加锁比较的慢,锁的定位力度最小,但是,因为是对与一行一行的进行行锁,那么发生锁冲突的概率也是比较低的,并发度也是最高的(同时进行操作)

        1.共享锁(又称为读锁)  多个事务可以对于同一列进行访问数据,但是仅仅只能够进行读取,而不能够进行相应的修改数据

        2.排它锁(又称为写锁)  不能够与其他的锁并存,一个事务获得了一行数据的排他锁,那么其他的事务就不能够对其再次的进行获取,包括了读取以及修改,除非该锁打开

        如图,当没有提交事务之前,如果再对于同一个行的数据再次进行修改的时候就会被挂起,从而无法修改,但是!可以对于除了这一行的其他行进行修改!这就是行锁对于表锁的一大不同之处

        TIPS:

        对于DQL的相关操作:update insert delete操作,INNODB都会自动的进行添加排他锁

        对于普通的查询操作,并不会添加任何的锁

                                                                OVER!感谢观看

        

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

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

相关文章

pclpy 点云法线

pclpy 点云法线 一、算法原理1.理论入门2.选择正确的比例 二、代码三、结果四、相关数据 一、算法原理 表面法线是几何表面的重要属性,在许多领域(例如计算机图形应用程序)中大量使用,以应用正确的光源来生成阴影和其他视觉效果。…

先进电机技术 —— 通用变频器

一、变频器名称定义 通用变频器(Variable Frequency Drive, VFD)是一种广泛应用于工业控制领域的电力电子设备,其主要功能是改变供电电源的频率和电压,以达到对交流电动机转速进行精确、连续调节的目的。通用变频器通常具备以下特…

2023年12月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

一、单选题(共15题,共30分) 第1题 现代计算机是指电子计算机,它所基于的是( )体系结构。 A:艾伦图灵 B:冯诺依曼 C:阿塔纳索夫 D:埃克特-莫克利 答案:B 第2题 默认小猫角色,执行下列程序,舞台上会看到? ( ) A: B: C: D: 答案:C

数据库-第二/三章 关系数据库和标准语言SQL【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下计数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言第二、三章 关系数据库和标准语言SQL2.1 关系2…

Unity RectTransform·屏幕坐标转换

RectTransform转屏幕坐标 分两种情况 Canvas渲染模式为Overlay时,使用此方式 public Rect GetScreenCoordinatesOfCorners(RectTransform rt) {var worldCorners new Vector3[4];rt.GetWorldCorners(worldCorners);var result new Rect(worldCorners[0].x,world…

Redis--持久化机制详解

什么是redis持久化? Redis持久化是将内存的数据持久化到磁盘上,防止Redis宕机或者断点的时候内存中的数据丢失,把内存中的数据写入到磁盘的过程叫持久化。 Redis持久化的方式? RDB(Redis DataBase)&…

无法调试MFC源码

VS无法调试MFC源码 起初 有时候就是这么无奈,MFC源码各种问题没有办法调试,可是又想看下代码如何调用,里面做了些什么,从哪儿调出,学习一下大神的思路什么的。整理一下有可能的原因。 检查生成代码设置 需要设置正…

echarts vue 动画效果的水球图、波浪图教程

1、安装插件 前提是已经安装了echarts(我的版本是4.2.1) npm install echarts-liquidfill --save 我安装了3.1.0版本的,结果运行时报错"TypeError: wave.ensureState is not a function" 原因:echarts版本和echarts-l…

每周一算法:双端队列广搜

题目链接 电路维修 题目描述 达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上。翰翰的家里有一辆飞行车。有一天飞行车的电路板突然出现了故障,导致无法启动。 电路板的整体结…

JavaSE——常用API(2/3)-String使用时的注意事项、String的应用案例

目录 String使用时的注意事项 阅读程序并解答(1) 阅读程序并解答(2) String的应用案例 案例1 案例2 小结 String使用时的注意事项 String对象的内容不可改变,被称为不可变字符串对象。(每次试图改变…

软考 系统分析师系列知识点之需求获取(7)

所属章节: 第11章. 软件需求工程 第2节. 需求获取 需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。需求获取是一件看上去很简单、做起来却很难的事情。需求获取是否科学、准备是否充分,对获取出来的结果影响很大,这是因为大部…

每日学习总结20240228

每日总结 20240228 1.获取系统命令执行结果 #include <stdio.h>#define TRUE 1 #define FALSE 0int get_system_cmd_result(const char *command, char *buffer, int bufferLen) {FILE *pipe popen(command, "r");if (pipe NULL) {return FALSE;}while (f…

winform 自定义组件 之踩坑 自定义属性属性列表不展示

问题描述&#xff1a; 使用winform 自定义组件&#xff0c;定义自定义属性性&#xff0c; 使用自定义组件属性页面不展示。 百度N次无解 问了AI 发现犯了个低智错误&#xff1a; 属性末设置为 public; 解决方案一&#xff1a;

NLP Seq2Seq模型

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/mi…

等概率事件算法

1等概率的生成(0-8)范围内的正整数 // Math.random 数据范围[0,1) 且 是 等概率的产生随机数 // 应用&#xff1a; // 1.生成等概率的整数&#xff08;等概率的生成(0-8)范围内的正整数 int value (int) (Math.random() * 9); System.out.println("value "…

YOLOv9有效提点|加入BAM、CloFormer、Reversible Column Networks、Lskblock等几十种注意力机制(二)

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文只有代码及注意力模块简介&#xff0c;YOLOv9中的添加教程&#xff1a;可以看这篇文章。 YOLOv9有效提点|加入SE、CBAM、ECA、SimA…

逆变器专题(13)-逆变器LCL滤波器设计

相应仿真原件请移步资源下载 随着新能源的蓬勃发展&#xff0c;逆变器作为光伏储能的核心电力电子器件之一&#xff0c;其也得到了大力发展&#xff1b;传统的L型以及LC型滤波器因其体积较大、滤波效果差等原因已经被逐渐替代&#xff0c; LCL滤波器因其具有较小的体积&#xf…

JavaWeb HTTP 请求头、请求体、响应头、响应体、响应状态码

J2EE&#xff08;Java 2 Platform Enterprise Edition&#xff09;是指“Java 2企业版”&#xff0c;B/S模式开发Web应用就是J2EE最核心的功能。 Web是全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站。 在日常的生活中&#xff0c;经常会使用…

通过GitHub探索Python爬虫技术

1.检索爬取内容案例。 2.找到最近更新的。(最新一般都可以直接运行) 3.选择适合自己的项目&#xff0c;目前测试下面画红圈的是可行的。 4.方便大家查看就把代码粘贴出来了。 #图中画圈一代码 import requests import os import rewhile True:music_id input("请输入歌曲…

编译链接实战(22)C/C++代码覆盖率统计报告生成

文章目录 GCOV 工具简介gcov 使用lcov相关编译选项 GCOV 工具简介 gcov是一个测试代码覆盖率的工具&#xff0c;它是 gcc 自带的查看代码覆盖率的工具。 与GCC结合使用&#xff0c;可以分析您的程序以帮助创建更高效、运行更快的代码&#xff0c;并发现程序中未经测试的部分。…