MYSQL--锁机制*

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

        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.hqwc.cn/news/502072.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python环境搭建:一站式指南

在当前AIGC技术蓬勃发展的背景下,Python作为人工智能领域最受青睐的编程语言之一,成为我们必须掌握的技能。因此,搭建一个适合自己的Python环境成为了每个Python开发者的首要任务。本文将为您提供一站式的Python环境搭建指南,帮助…

WSL2部署RV1126 SDK编译环境

1 下载RV1126 SDK 在 Firefly | 让科技更简单,让生活更智能 下载REPO_SDK 这里将SDK下载到了F:\SDK 2 解压SDK到WSL2 tar -xvf /mnt/f/SDK/rv1126_rv1109_linux_release_20211022.tgz 3 编译依赖安装 gcc、g版本依赖安装 sudo apt-get install lib32gcc-7-dev g-7 l…

内容检索(2024.03.01)

随着创作数量的增加,博客文章所涉及的内容越来越庞杂,为了更为方便地阅读,后续更新发布的文章将陆续在此汇总并附上原文链接,感兴趣的小伙伴们可持续关注文章发布动态! 本期更新内容: 1. 电磁兼容理论与实…

【王道数据结构】【chapter8排序】【P371t5】

编写一个算法&#xff0c;在基于单链表表示的待排序关键字序列上进行简单选择排序 #include <iostream> #include <time.h> #include <stdlib.h> typedef struct node{int data;struct node *next; }node,*pnode;pnode buynode(int x) {pnode tmp(pnode) mal…

加密与安全_探索口令加密算法(PBE)

文章目录 概述疑问PBE 算法 &#xff08; Password Based Encryption&#xff09;CodePOM实现 小结 概述 加密与安全_探索对称加密算法中我们提到AES加密密钥长度是固定的128/192/256位&#xff0c;而不是我们用WinZip/WinRAR那样&#xff0c;随便输入几位都可以。 这是因为对…

Spring底层源码分析

spring依赖注入底层原理解析 spring之bean对象生命周期步骤详情 流程&#xff1a; UserService.class —>推断构造方法—>普通对象----依赖注入------>初始化&#xff08;afterPropertiesSet方法&#xff09;------>初始化后&#xff08;AOP&#xff09;------…

软考-计算题

1.二维矩阵转换成一维矩阵 2.算术表达式&#xff1a; 3.计算完成项目的最少时间&#xff1a;之前和的max&#xff08;必须之前的所有环节都完成&#xff09; 松弛时间&#xff1a;最晚开始时间-最早开始时间 最早&#xff1a;之前环节都完成的和的max 最晚&#xff1a;总时间…

word文档空格不能有下划线【笔记】

word文档空格不能有下划线 2024-3-1 21:20:24 推荐 word下划线打不出来了&#xff0c;是怎么回事&#xff1f; 问题 字后面打不出来下划线 操作 1.点击文件 左上角&#xff0c;点击“文件”。 2.点击选项 鼠标下滑&#xff0c;点击“选项”。 3.点击常规与保存 点击“…

吸引用户购买产品的文案技巧,媒介盒子揭秘

在营销过程中&#xff0c;想要吸引用户购买产品&#xff0c;文案是重中之重&#xff0c;需要一定的技巧才能将文案写好&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;在品牌推广中如何通过一些小技巧吸引用户购买产品&#xff1a; 一、 少说专业术语 少说行话、黑话。多…

PyQt5嵌入外部exe(如微信、cmd窗口)

背景&#xff1a; PyQt在使用中需要使用一下另外一个exe程序&#xff0c;需要嵌入一下 过程&#xff1a; Qt实战11.进程窗口集成之假装写了个第三方软件 - Qt小罗 - 博客园 (cnblogs.com) python操作windows窗口获取正在运行的窗口句柄_python使用句柄操作-CSDN博客 翻译成…

类加载的基本流程

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 类加载 1. 加载2. 验证3. 准备4. 解析5. 初…

防御保护课程笔记

内容安全 防病毒 过滤技术 密码学