深圳品牌网站策划seo广州工作好吗

web/2025/9/27 17:23:13/文章来源:
深圳品牌网站策划,seo广州工作好吗,百度站长链接提交平台,温州企业建站系统模板前言 作为一名IT从业人员#xff0c;无论你是开发#xff0c;测试还是运维#xff0c;在面试的过程中#xff0c;我们经常会被数据库#xff0c;数据库中最经常被问到就是MySql。当面试官问MySql的时候经常会问道一个问题#xff0c;”MySQL中有哪些锁#xff1f;“当我…前言 作为一名IT从业人员无论你是开发测试还是运维在面试的过程中我们经常会被数据库数据库中最经常被问到就是MySql。当面试官问MySql的时候经常会问道一个问题”MySQL中有哪些锁“当我们去网上找相应的资料的时候却是五花八门张三说的一个样李四说的另一个样。 like this… 案例一 案例二 案例三 案例四 搞得我们都不知道他们说到底对不对全不全…于是我们非常之困惑面试的时候不知如何作答正是为了解决这个问题我查阅了很多书籍国内外资料写下这篇文章希望对你有所帮助。 锁到底是个什么东西 维基百科是这样解释的锁是一种保安设施是人类为了保护自己的财产而发明的一种用钥匙才能开启的装置。就现代而言是一种以钥匙、密码、电路或者其他用具来开启的封缄装置用以防止物品被打开、移走兼具防护、管理甚至是装饰的作用。所以锁最重要的作用自然就是保护安全。 在计算机的世界里其实也一样使用锁的目的几乎都是为了保证数据的安全可靠。在生活中锁千奇百怪但我们可以将锁大致分为两种一种是需要钥匙的一种是不需要钥匙的当然现代家庭中的指纹锁数字密码锁都是需要钥匙的哈只是钥匙不是实体钥匙而已。有很多朋友可能很纳闷锁还有不需要钥匙的答案是有的 比如 如果你来自农村并且家里还有老宅那你可能也见过这样的锁 这些锁都是不需要钥匙的我们将之为”闩shuan锁“。 需要钥匙的锁就很常见了比如 再比如 这种需要钥匙的锁我将之称为”锁“。 所以非常直观的感受就是虽然都为锁但是闩锁比较”轻量“自然也就没那么安全而”锁“则麻烦一些需要随身带着钥匙所以相对也会更安全一些。相信到这里你已经对锁有比较好的理解了那我们接着说数据库中的锁。 Mysql中的锁 在数据库中自然也将锁分成了两类一类叫latch也就是闩锁另一种叫lock锁。 latch一般称为闩锁轻量级的锁因为其要求锁定的时间必须非常短。若持续的时间长则应用的性能会非常差。在InnoDB存储引擎中latch又可以分为mutex互斥量和rwlock读写锁。其目的是用来保证并发线程操作临界资源的正确性并且通常没有死锁检测的机制。 在数据库中,连接是一种珍贵的资源连接自然不可能无限变多也不可能同时被多个线程同时持有这时候就需要用锁来保证同一时刻同一个连接只能被一个线程持有这时候用到的锁就是我们说的闩锁。 而lock的对象是事务用来锁定的是数据库中的对象如表、页、行。并且一般lock的对象仅在事务commit或rollback后进行释放不同事务隔离级别释放的时间可能不同。此外lock正如在大多数数据库中一样是有死锁机制的。所以我们在看一些文章的时候经常会看到将MySQL的锁分为行锁、表锁、页锁他们得出的依据就是来来自于此。关于行锁、表锁、页锁我们先按下不表后面展开说 这里借用MySQL技术内幕中一张图对比一下latch与lock的区别 总结一下其实他俩最大的区别就是作用的范围不同latch更像是我们日常开发过程中使用到的应用程序级别的“普通锁”。而lock则是为了操作数据库中数据的一种特殊的“事务锁”平时我们面试的时候面试官问的也主要是这种为了操作数据库中数据而存在的事务锁。 在这里先提前给大家总结一下 站在更高的维度看问题-锁无非就是读和写 不知你是否发现无论是生活中的各种鸟锁无非就是要不要用到钥匙 然后把他分成闩锁和锁。到了计算机界锁无非也总的来说也就是两种 一种是我拿到了锁我一个事务只让你另一个事务读只让你读不让你写另一种是哥们我拿到锁了你们都往后靠一靠吧连读都不让你读的等我操作完了你们再来吧好比厕所蹲坑不可一个坑两个人同时蹲。所以你要明白“有空一起拉屎”只是调侃可千万不能当真 回归正题于是乎按照严格我拿到锁了你到底能不能读这个权限将锁分为了两种 共享锁S Lock也叫做读锁排他锁X Lock也叫做写锁 注你必须明白一点写的权限高于读所以如果我说基于读这个权限意思就是读都读不了还写个毛啊 所以我们总结再总结一下可以得出 等等…我听说的全局锁、表锁、行锁你丫的没给我讲呢 前面我们已经讲了锁无非就是读和写这是从功能上来说但是每个事务都有自己的表现形式呀你说对吧 在MySQL中数据库中的数据被分为了库–表—行所以MySQL中的锁按照锁的粒度分自然而然就产生对应的全局锁、表锁和行锁了哟 全局锁锁定数据库中的所有表表级锁每次操作锁住整张表行级锁每次操作锁住对应的行数据 好了有了上面的铺垫我们继续讲解这三种锁的使用以便你在工作和面试中“惊艳四座、大杀四方、godlike” 全局锁就是对整个数据库实例加锁加锁后整个实例就处于只读状态后续的DML的写语句DDL语句已经更新操作的事务提交语句都将被阻塞。 “后续的DML的写语句DDL语句已经更新操作的事务提交语句都将被阻塞。” 这几句话列位能理解的吧 好吧你们都能理解那我也当个小丑讲一下吧 DML的写语句sql语句中的update和delete语句都是写语句 DDL语句就是要修改表结构的语句比如ALTER TABLE table_name ADD column_name data_type 已经更新操作的事务提交语句这一句优点难理解,直接上代码 BEGIN -- 第一句UPDATE subject SET nameccc12 WHERE id 1 -- 第二句COMMIT;--第三句他想表达的意思就是在锁库之前已经执行了前面两句sql然后库被锁住了这时候如果再执行第三句那么这个操作就会被阻塞 证明 首先我们先执行第一句 再执行第二句 好的我们去另一个事务中把库锁了 这时候我们再去第一个事务中执行提交语句 哎呀家人们呐看到了没他被阻塞住了不执行了 我们再把锁释放了 我们再回到第一个事务 COMMIT已经执行成功了从花费时间上也不难看出确实是被阻塞了呢 全局锁这么猛(锁的粒度太™的大了)他在什么地方使用呢 全局锁典型的使用场景是做全库的逻辑备份对所有的表进行锁定从而获取一致性视图保证数据的完整性。但是在数据库中加全局并不是一个好选择因为数据库中加全局锁是一个比较重的操作存在以下问题 1如果在主库上备份那么在备份期间都不能执行更新业务基本上就得停摆。 2.如果在从库上备份那么在备份期间从库不能执行主库同步过来的二进制日志binlog会导致主从延迟。 在lnnoDB引擎中我们可以在备份时加上参数–single-transaction参数来完成不加锁的一致性数据备份。 mysqldump --single-transaction -uroot -p123456 testtest.sql 说完全局锁我们接着说表锁对你没看错是表锁不是表嫂 但是在这里我们要把它称为表级锁而不是表锁为什么要这么称呼呢那肯定有是有道理滴因为 同为表级锁主要分为以下三类 1.表锁2.元数据锁meta datalockMDL3.意向锁 他们都可以称为表级锁对于表级锁来说每次操作锁住整张表在MyISAM、InnoDB、BDB等存储引擎中都有实现。由于每次操作锁住整张表所以表锁的锁定粒度大发生锁冲突的概率最高并发度低。 这下真的要开始讲表锁了 表锁主要分为两类 1.表共享读锁read lock2.表独占写锁write lock 共享读锁当一张表被上了共享读锁以后这张表只能被读不能被写且读的话大家不同的事务都可以读写的话大家都不能写。 举个例子好理解一点 我们先将表上锁 BEGIN LOCK TABLES subject READSELECT * FROM subject WHERE id1COMMIT;同一个事务内的读如图 第一步 第二步 不同的事务内的读 同一事务内的写 不同事务内的写 独占写锁当一张表被上了共享读锁以后当前事务既能读数据也能写数据同时还能修改表结构别的事务既不能读数据也不能写数据必须等到该锁被释放以后才能读写数据。验证方式和上面一样不再给图了 这里一定要注意我锁强调的是”别的事务“而不是有些文章或者教学视频说的别的客户端这是完全不同的概念同一个客端可以上开启多个不同的事务 总结如图 表锁终于说完了有些人看到这这里内容太多估计已经暴躁了想骂人 我也不想可是它必须要讲 我们接着讲另一个表级锁–元数据锁 元数据锁metadata lock 也叫MDL他的加锁过程是系统自动控制无需显式使用在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性在表上有活动事务的时候不可以对元数据进行写入操作。为了避免DML与DDL冲突保证读写的正确性。在MySQL5.5中引I入了MDL当对一张表进行增删改查的时候加MDL读锁共享)当对表结构进行变更操作的时候加MDL写锁(排他)。 说白了元数据锁其实就是”表结构锁“没人这么叫你可以这么理解意思就是数据增删改查的时候能动了表结构不然就会产生冲突比如你在插入数据的时候你把我表结构的其中一列给删了你这让我这么插 好的我们继续讲解最后一个表级锁–意向锁 意向锁,为了避免DML在执行时加的行锁与表锁的冲突在InnoDB中引入了意向锁使得表锁不用检查每行数据是否加锁使用意向锁来减少表锁的检查。 考虑这个例子事务A锁住了表中的一行让这一行只能读不能写。之后事务B申请整个表的写锁。如果事务B申请成功那么理论上它就能修改表中的任意一行这与A持有的行锁是冲突的。数据库需要避免这种冲突就是说要让B的申请被阻塞直到A释放了行锁。 数据库要怎么判断这个冲突呢 step1判断表是否已被其他事务用表锁锁表 step2判断表中的每一行是否已被行锁锁住。 注意: step2这样的判断方法效率实在不高因为需要遍历整个表。于是就有了意向锁。在意向锁存在的情况下事务A必须先申请表的意向共享锁成功后再申请一行的行锁。 在意向锁存在的情况下上面的判断可以改成step1不变,step2发现表上有意向共享锁说明表中有些行被共享行锁锁住了因此事务B申请表的写锁会被阻塞。 意向锁分为两类: 1.意向共享锁IS由语句select…lock in sharemode添加。与表锁共享锁read兼容与表锁排它锁write互斥。 2.意向排他锁Ix由insert、update、delete、select…forupdate添加。与表锁共享锁read及排它锁write都互斥,意向锁之间不会互斥。 可以通过以下SQL查看意向锁及行锁的加锁情况select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks; 终于到了”行级锁“——千呼万唤始出来 我们继续学习行级锁行级锁每次操作锁住对应行的数据锁定粒度最小发生锁冲突的概率最低并发度最高。 InnoDB存储引擎支持行级锁InnoDB的数据是基于索引组织的行锁是通过对索引上的索引项加锁来实现的而不是对记录加的锁。这一点非常重要 对于行级锁主要分为以下三类 **1.行锁RecordLock**锁定单个行记录的锁防止其他事务对此行进行update和delete。在RC读已提交、RR可重复读隔离级别下都支持。 **2.间隙锁GapLock**锁定索引记录间隙不含该记录确保索引记录间隙不变防止其他事务在这个间隙进行insert产生幻读。在RR隔离级别下都支持。 **3.临键锁Next-KeyLock**行锁和间隙锁组合同时锁住数据并锁住数据前面的间隙Gap。在RR隔离级别下支持。 行锁也被叫做记录锁InnoDB实现了以下两种类型的行锁 1.共享锁S 允许一个事务去读一行阻止其他事务获得相同数据集的排它锁。 2.排他锁X 允许获取排他锁的事务更新数据阻止其他事务获得相同数据集的共享锁和排他锁。 其中insert、update、delete语句MySQL会自动为这些语句自动加上排他锁select…lock in share mode语句会加上共享锁select…for update加上排他锁普通的select语句并不会加任何锁 锁的升级与降级 默认情况下InnoDB在REPEATABLE READ事务隔离级别运行InnoDB使用next-key锁进行搜索和索引扫描以防止幻读。 第一类情况 针对唯一索引进行检索时对已存在的记录进行等值匹配时将会自动优化为行锁。InnoDB的行锁是针对于索引加的锁不通过索引条件检索数据那么InnoDB将对表中的所有记录加锁此时就会升级为表锁。 第二类情况 索引上的等值查询(唯一索引)给不存在的记录加锁时优化为间隙锁。索引上的等值查询(普通索引)向右遍历时最后一个值不满足查询需求时next-key lock退化为间隙锁。索引上的范围查询(唯一索引)会访问到不满足条件的第一个值为止。 注意 间隙锁唯一目的是防止其他事务插入间隙。间隙锁可以共存一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁。 所以最后总结一下就是这样的 最后 如果你能看到这里那说明你真是太棒了全文快五千字了基本上把mysql的锁讲透了同时你还有什么问题可以给我留言一起进步能一键三连的话我将不甚感激

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

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

相关文章

dedecms妇科医院wap网站模板 v1.0在做网站编代码网页导航条中的文字出现在导航条的下方怎莫解决

上周更新完了之前vue3的shopping项目,接下来,将会开启一个新的项目,效果是类似于移动端的一个伙伴匹配项目,今天这篇文章从需求分析到架构设计再到项目初始化,基本框架搭建几个部分来为大家详细介绍。 从这个项目开始…

成都 php 网站恋家网邯郸房产

解决Android studio 2.3升级到Android studio 3.0 后apt报错问题发布时间:2020-09-16 19:59:42来源:脚本之家阅读:62作者:哈特中尉1.现象描述原来项目在Android studio 2.3一切正常,升级3.0之后报如下错误:…

做网站代码保密协议欧莱雅采用了哪些网络营销方式

起因 最近要搞groovy介绍,准备做成一系列的东西,参考github上的计划。https://github.com/javahub/groovy_hello spock没有找到翻译文档,动手把最重要的一章primer翻译下,想起了c primer。就当作翻译练习了。 目前项目大使用spock…

沈阳网站建设哪里好网站效果图用什么做

工欲善其事,必先利其器。Chrome 可能是前端开发中使用最多的浏览器。在日常开发中,下列几款 Chrome 扩展也许能让你的开发工作事半功倍 🚀 Vue.js devtools ⚙️ vue 官方专为 vue 应用开发的调试工具。 通过使用它,你可以快速查看…

效果图网站推荐大全可以做天猫代码的网站

1. 简介 Vue 在插入、更新或移除 DOM 时&#xff0c;提供多种不同方式的过渡效果&#xff0c;并提供 transition 组件来实现动画效果&#xff08;用 transition 组件将需执行过渡效果的元素包裹&#xff09; 语法&#xff1a;<transition name””>元素或组件&#xff…

网站开发需要大学吗中企动力网站建设 长春

Linux怎么读Linux是一种操作系统&#xff0c;不过很多朋友都不知道Linux怎么读?Linux正确读法 “哩呐克斯”&#xff0c;音标&#xff1a;[li:nэks] 重音在“哩”上。由于大多数的电脑都是安装Windows&#xff0c;其实也可以安装Linux&#xff0c;不过大家都习惯了Windwos&am…

太原模板建站定制微信可以上网

java插入排序Java程序插入示例的排序。 显示了示例仿真以及时间复杂度。 插入排序是一种简单的排序算法&#xff0c;可以一次构建一个最终的排序数组&#xff08;或列表&#xff09;。 它比冒泡排序有效得多&#xff0c;并且在大型列表上的效率比快速排序 &#xff0c;堆排序或…

网站源码推荐伊犁网站制作

一、各种税的计算方式增值税1、一般纳税人应纳税额销项税额—进项税销项税额销售额税率组成计税价格成本(1成本利润率)组成计税价格成本(1成本利润率)(1-消费税税率)2、进口货物应纳税额组成计税价格税率组成计税价格关税完税价格关税(消费税)3、小规模纳税人应纳税额销售额征收…

找网站建设公司抖音制作图片的软件

如何更新MSF1、Windows平台方法1&#xff1a;运行msfupdate.bat在msfconsole里执行命令svn update或者方法2&#xff1a;2、unix/linux平台方法1&#xff1a;运行msfupdate即可。方法2&#xff1a;(比较麻烦)安装subversion客户端(--with-ssl)&#xff0c;之后连接CVS server进…

用asp做的网站打开页面很慢磁县专业做网站

1. 装置概述与目标 在工业和实验室环境中&#xff0c;阀门的准确性和稳定性对于流体控制和实验数据的可靠性非常重要。LabVIEW可以作为开发阀门自动校准装置的理想工具&#xff0c;提供高度可定制化的解决方案。 2. 硬件与设备选择 型号选择&#xff1a;为了实现阀门自动校准…

网站排名优化推广重庆万州网站建设公司电话

问题A&#xff1a;不能整除 题目描述 给你一个长度为 N N N的整数序列 a i a_i ai​,找出满足下列条件的 i ( 1 ≤ i ≤ N ) i(1\leq i \leq N) i(1≤i≤N)的个数&#xff1a; 对于每个 j j j并且 1 ≤ j ≤ N , i ≠ j 1\leq j \leq N, i \neq j 1≤j≤N,ij&#xff0c; a …

网站营销策略有哪些seo检测

UDP 协议&#xff08;用户数据包协议&#xff09; UDP 是无连接通信协议&#xff0c;即在数据传输时&#xff0c;数据的发送端和接收端不建立逻辑连接&#xff0c;简单来说&#xff0c;当客户端向接收端发送数据时&#xff0c;客户端不会确认接收端是否存在&#xff0c;就会发出…

常州百度网站排名安阳网站建设推广优化

一、概述 1、起源 MyBatis本是Apache下的开源项目&#xff0c;名为iBatis,2010年转投谷歌,从iBatis3.x开始更名为MyBatis 2、优点 (1)优秀的数据持久层框架&#xff08;对jdbc做了轻量级封装&#xff09; 3、特点 (1)对jdbc中接口进行封装的同时还提供了一些自己的类实现…

地方性资讯门户网站网站点击率多少正常

目录 含义语法格式语句特点数组的长度数组的元素打印数组显示数组数组的复制扩展示例【12】 含义 数组&#xff08;array&#xff09;是一种最简单的复合数据类型&#xff0c;它是有序数据的集合&#xff0c;数组中的每个元素具有相同的数据类型&#xff0c;可以用一个统一的数…

网站收录检测公众号代运营平台

在电子商务的浩瀚海洋中&#xff0c;数据是驱动业务决策的核心引擎。阿里巴巴旗下的1688平台&#xff0c;作为全球领先的B2B在线市场&#xff0c;不仅汇聚了海量的商品信息&#xff0c;还提供了丰富的API接口&#xff0c;为开发者提供了强大的数据获取工具。本文将深入探讨1688…

网站建设需要哪些技能免费企业名录软件

MySQL是一个小型关系型数据库管理系统&#xff0c;由于MySQL体积小、速度快、总体拥有成本低&#xff0c;尤其是开放源码这一特点&#xff0c;许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。关于mysql自动关闭服务的现象&#xff0c;可以通过mysql服务器…

单页淘宝客网站什么是外包

Flutter 中的 ExpansionTile 小部件&#xff1a;全面指南 在 Flutter 应用中&#xff0c;ExpansionTile 是一个常用的折叠列表项&#xff0c;它允许用户点击标题来展开或折叠更多的内容。这个组件在实现可折叠列表、FAQ 部分或显示详情信息时非常有用。本文将详细介绍 Expansi…

网站核验点查询义乌市场官方网站

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章我们来到初始化列表&#xff0c;隐式类型转换以及explicit的内容 目录 1.初始化列表1.1构造函数体赋值1.2初始化列表1.2.1隐式类型转换与复制初始化 1.3e…

南坪网站建设做影视网站代理犯法吗

文章目录 &#x1f36a;一、前言&#x1f369;1、C简介&#x1f369;2、C关键字 &#x1f36a;二、命名冲突&#x1f36a;三、命名空间&#x1f369;1、命名空间定义&#x1f369;2、命名空间的使用 &#x1f36a;四、C输入&输出 &#x1f36a;一、前言 本篇文章是《C 初阶…