Mysql学习笔记------锁

Unity物理引擎实战:从刚体重心到碰撞体,打造真实不倒翁交互 刚体(Rigidbody)是Unity物理系统的核心组件,它定义了游戏对象的物理属性,如质量、阻力和碰撞响应。其原理基于牛顿力学,通过物理引擎(如PhysX)实时计算物体的运动状态。在游戏开发中,刚体的价值在于能够模拟真实世界的物理行为,为玩家提供沉浸式的交互体验。碰撞体(Collider)则定义了物体的形状边界,用于检测与其他物体的接触。通过精细调整刚体的重心(Center of Mass)和碰撞体形状,开发者可以模拟出各种有趣的物理现象,例如低重心物体的动态平衡。这在休闲游戏、物理玩具模拟等场景中尤为实 阅读详情

锁的基本类型:

共享锁:

共享锁又称为读锁,简称S锁,
加锁方式:
Select * from xxx where id = 1 LOCK IN SHARE MODE;
释放锁: commit/rollback;
它的特点我们通过测试试一下:
现有测试表t1:
在这里插入图片描述
开启事务并给数据加共享锁:
在这里插入图片描述
开启另一个事务也对该数据加锁:
在这里插入图片描述
此时我们依然能够加锁成功(查询出结果即为成功),因此可以得出一个结论,其他事务可以对同一条数据共享一把锁,都能访问到数据中.

继续测试,我们在另一个事务修改该数据:
在这里插入图片描述
此时修改失败并报错, 因此添加共享锁后,其他事务对该数据是不能进行写操作的.所以共享锁又称为读锁

总结: 添加共享锁后,其他事务可以对同一条数据共享一把锁,都能访问到数据中,但是只能读不能修改,原因是增删改操作时默认添加了排他锁,后面会提到

排他锁:

又称写锁,简称X锁.
加锁方式:
写操作: delete/update/insert 默认加排他锁
读操作: select * from xxx where id = 1 FOR UPDATE;

老规矩,直接测试:
开启事务,并对数据添加排他锁:
在这里插入图片描述
开启另一个事务,对该数据添加共享锁:
在这里插入图片描述
可以看到,查询43秒依然查不到,可以得出结论,排他锁是排斥共享锁的.

在另一个事务添加排他锁:
在这里插入图片描述
依然查不到,可以得出结论,连个排他锁也是互相排斥的.

普通读取:
在这里插入图片描述
普通读取是可以成功的.因为普通读取并没有加锁操作.

总结: 排他锁是不能够和其他锁并存的,如果一个事务获取了数据行的排他锁,其他事务就不能够再获取了,只有获取了排他锁的事务才能对该数据进行读取和修改,其他事务在不加锁的前提下可以读取该数据.上面提到过,增删改默认是添加排他锁的,所以一条添加共享锁的数据是不能修改的.

记录锁:
间隙锁:
临键锁:
这三个学的有点迷糊,等研究研究在更新…

表锁(意向锁):

意向锁是由数据引擎自己维护的,用户无法手动操作.
意向共享锁, 意向排它锁一起说了,他俩概念类似,当事务准备给数据行添加共享锁(排它锁)时,一定会先取得该表的意向共享锁(排他锁).
解释一下就是当事务要给某个数据加锁了,此时数据引擎会提前给这个表添加一个意向锁.意向锁是行锁的前提.

作用:
意向锁可以理解为是一个标识,比如说当我们要锁定一张表时,需要先确定该表中是否有行锁,那这样就需要进行全表扫描来确认了,如果该表数据量非常大时,对于性能,效率等影响是很大的,而有了意向锁之后,我们只需要判断该表中是否有意向锁即可了,简化了很多的扫描步骤.

锁的作用:

锁主要是为了解决事务对于数据并发访问产生的一系列问题.

那么锁主要锁住了什么呢? 其实锁锁定的并不是某一行或某一列数据,而是锁定的索引.

那如果一张表没有索引的话,加锁会怎么加呢?
可以直接测试一下:

开启事务,对数据行1 加锁:
在这里插入图片描述

开启另一个事务对数据行2加锁:
在这里插入图片描述
可以看到是失败的,给第三条第四条数据都失败,可以发现,当没有索引的时候,貌似是把整张表都锁住了,这是为什么呢?

其实在我之前的索引的文章中提到过,对于一张表来说,当没有指定聚集索引时,会将隐藏的ROW_ID作为聚集索引(一张表必定有聚集索引),而由于表中没有索引,在加锁的时候自然也无法指定索引,此时会进行全表扫描,将表中所有默认索引(ROW_ID)都锁住了,所以我们看起来像是整张表都被锁住了.

我们对id添加索引并对数据1加锁:
在这里插入图片描述

在另一个事务查询数据5:
在这里插入图片描述
查询成功.
还需要说一点的是,当我们通过唯一索引加锁时,也会将主键索引锁住,这是因为辅助索引存储的是存储索引和主键值,关于索引的文章也提到过,大家可以自己测一下.

46、聚类算法在智能交通数据分析中的应用 本文探讨了聚类算法在智能交通数据分析中的应用,介绍了K-均值算法、K-中心点算法和基于模型的聚类算法的基本原理及特点,并结合实际交通数据讨论了其应用场景与挑战。通过聚类分析,能够从海量交通数据中发现隐藏模式,为交通管理和规划提供科学依据。文章还展示了具体的案例分析和实现流程,为未来智能交通系统的发展提供了参考。 阅读详情

相关推荐

VMware共享磁盘配置实战:从零搭建多机共享存储环境

本文详细介绍了在VMware环境中从零开始配置共享磁盘的完整实战流程。通过创建共享磁盘、挂载至多台虚拟机并修改.vmx配置文件等关键步骤,帮助用户搭建可用于数据库集群(如Oracle RAC)测试的多机共享存储环境,并提供了核心参数设置与常见问题排查指南。

weixin_29284201的博客 491

【MySQL学习笔记】——MySQL锁

(仅仅个人学习使用,所以有些简单粗糙,可能会出现错误与遗漏)

qshan805的博客 1087

S32的进阶之路->3,S32DS新建/删除/导入工程

右击工程名,点击Delect进行工程删除。选中Delect project contents on disk则会彻底删除工程,不选中Delect project contents on disk工程文件会保存在工作空间中。在Improt Projects中选择工程所在文件夹,选中所需要导入的工程,勾选Copy projects into workspace。选中目标示例工程,点击Finish,完成创建工程。导入已有工程,右击右击Project Explorer空白处,选择Import。

LC_8575的博客 2224

MySQL学习笔记-08(锁)

- 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I0)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。

weixin_41016739的博客 1335

SecureCRT多种配色方案配置文件

位置 C:\Users%USERNAME%\AppData\Roaming\VanDyke\Config\Global.ini S:"SecureCRT Tab State"=1,1,1,0,0 S:"SecureFX Local Tab State"=1,-1,200 D:"Max Chat Window History"=000000c8 D:"Active Window Alpha Transparency"=000000f0 D:"Save Keymaps As Unicode"=00000000

神棍之路 3707

YOLOv8 智能交通违章检测 - 压线/越线行驶检测详解

本文提出了一种基于YOLOv8的智能交通违章检测方案,重点解决车辆压线/越线行驶的识别问题。系统采用多技术融合方案:YOLOv8检测车辆、ByteTrack跟踪轨迹、传统或深度学习方法识别车道线,并通过几何计算判断车辆是否违规跨越实线。文章详细介绍了技术难点(如车道线分类、透视变形处理)、判定流程、系统架构和核心代码实现,包括车道线检测、违章逻辑判断和可视化模块。同时指出了现有方案的局限性,建议通过引入逆透视变换和专用车道线分割模型来提升准确率。该纯视觉方案具有低成本、易部署的特点,适用于智能交通监控场景。

u010117029的博客 175

MySQL学习笔记 ---- 锁

锁机制是「数据库并发的基石」,理解锁定粒度(行/表/全局)和适用场景,才能在「数据一致性」和「并发性能」之间找到平衡,就像自习室的「占座规则」——既要让大家高效学习,又要避免冲突。

weixin_74333370的博客 2291

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1875

MySQL学习笔记6【锁】

本篇文章主要对锁相关的内容做了相关笔记,视频教程参考b站黑马MySQL的教程。姑且先将已经写好的锁这一篇笔记写好,剩下两部分的计划可能得延后了…

Rinai的博客 878

python ERA-5气象数据NetCDF格式解析(一)

python ERA-5气象数据NetCDF格式解析

weixin_43896283的博客 2638

【U-Net 数据集制作】如何制作自己的图像分割数据集?(标注与格式转换),图像分割数据集制作与转换神器

在前面的课程中,我们像搭积木一样手写了 U-Net 的网络架构。很多同学迫不及待地想把自己的图片喂进网络开始“炼丹”。但是,深度学习界有一句名言:“数据决定了模型的上限,而网络结构只是在逼近这个上限。用标注工具标出来的是 JSON 文件,怎么变成 U-Net 需要的黑白掩码(Mask)图?为什么我的 Mask 肉眼看是黑白的,一放进 PyTorch 训练就报?如何快速按 8:2 的比例把几千张图片和标签划分成训练集和验证集?

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 191

MySQL锁学习笔记

锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。

liwenyang1992的专栏 678

使用Simulink对液流电池在微电网中的动态响应进行建模与仿真

本文介绍了使用Simulink对液流电池在微电网中的动态响应进行建模与仿真的方法。通过搭建包含液流电池、双向DC-DC变换器、分布式能源和负载的微电网模型,并设计基于SOC的控制器,详细说明了从模型创建到仿真运行的完整流程。重点分析了液流电池在不同负载条件下的动态特性,评估了系统响应速度、充放电效率和稳定性等性能指标。该仿真方法为验证液流电池在微电网中的应用提供有效工具,有助于优化参数设计和提升系统可靠性。

amy_mhd的博客 136

Mysql 锁学习笔记

事务隔离级别为可重复读(Repeated Read, RR)以主键或唯一索引作为查询条件,有存在值(记录)时是行锁,不存在值时触发间隙锁。普通索引作为查询条件,恒定间隙锁。索引作为查询条件,并以范围取值时,产生间隙锁。无索引时的普通检索,产生表锁。

阿七的博客 1456

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql 锁_MYSQL锁学习笔记

前言MYSQL是在大小公司中使用率极高的开源的关系型数据库,以其良好的易用性和在分布式场景下的高性能而著称,也是所有新手在数据库入门时的产品首选。最近因为听了公司的一位师兄关于MYSQL InnoDB锁的讲座,收获很多,所以将MYSQL锁相关的必备知识在此进行梳理。这些知识不仅可以帮助面试,也可以在日常开发进行性能优化或死锁问题排查时派上用场。当然,最重要的是,在对数据进行上锁时,就能够梳理出相应...

weixin_39554170的博客 80

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL 学习笔记——锁

详解 MySQL 锁机制,包括全局锁、表级锁和行级锁

猫头夜鹰的小屋 1274

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySQL 锁学习笔记

意向插入锁只与间隙锁和临键锁阻塞。同一个范围的意向插入锁可以被多个事务获取,只要没有唯一值约束阻塞或者与间隙锁和临键锁阻塞,插入都可以执行成功,是为了解决重复读隔离级别下的幻读问题,意向插入锁和临键锁的联用才是解决在当前读环境下,重复读幻读问题的具体原理。表级别的意向锁主要是为了平衡多粒度锁的性能,当有事务要对表里的行上锁,则先会获取表的意向锁,再上行锁,这样做的好处是当有另一个事务需要对表上锁时,并不需要遍历整个数据表判断是否有上行锁才能上表锁,而是直接通过表的意向锁判断是否可以上表锁,可以是何种表锁;

weixin_51008312的博客 1048

MySQL-锁学习笔记

全局锁就是对整个数据库实例加锁,加锁后,整个数据库实例会进入只读状态。在这种状态下,任何对数据的修改操作(如INSERTDELETEUPDATE等DML 语句),以及对表结构的修改操作(如等DDL 语句)都会被阻塞。但查询操作(SELECT)可以正常进行。整个数据库实例会进入只读状态,严格来说它并不是切换到,而是阻塞对表的写入。

2301_76909842的博客 876

MYSQL锁学习笔记

前言 MYSQL是在大小公司中使用率极高的开源的关系型数据库,以其良好的易用性和在分布式场景下的高性能而著称,也是所有新手在数据库入门时的产品首选。最近因为听了公司的一位师兄关于MYSQL InnoDB锁的讲座,收获很多,所以将MYSQL锁相关的必备知识在此进行梳理。这些知识不仅可以帮助面试,也可以在日常开发进行性能优化或死锁问题排查时派上用场。当然,最重要的是,在对数据进行上锁时,就能够梳理出相...

A16670113506的博客 326

【学习笔记】Mysql有哪些锁

mysql锁的学习笔记

weixin_60757041的博客 272

Mysql锁学习笔记

Mysql锁学习笔记锁分类表锁行锁总结行锁与事务隔离级别案例分析读未提交:读已提交可重复读串行化间隙锁(Gap Lock)临键锁(Next-key Locks)Mysql锁其他特点锁主要是加在索引上,如果对非索引字段更新,行锁可能会变表锁锁优化建议 锁分类 从性能上分,乐观锁和悲观锁 从对数据库操作上分,读锁和写锁(都是悲观锁) 读锁 (共享锁,shared锁)多个会话可以同时读,不能写 写锁 (排它锁,exclusive锁)只有一个会话可以读写,其他会话阻塞,知道当前获取的会话释放锁,其他会话才能执行

zhengkun51的博客 242

MySQL-锁的学习笔记

MySQL锁机制解析:全局锁、表级锁与行级锁 摘要:MySQL锁机制用于协调并发访问,确保数据一致性。按粒度分为三类:全局锁(锁定所有表,用于备份)、表级锁(表锁、元数据锁、意向锁)和行级锁(行锁、间隙锁、临键锁)。全局锁影响业务运行,建议使用--single-transaction参数备份。表级锁冲突概率高,包含共享读锁和独占写锁。行级锁通过索引实现,包含共享锁和排他锁,在RR隔离级别下使用间隙锁防止幻读。合理使用不同级别的锁能平衡并发性能和数据一致性。

记录运维小白学习过程 513

MySqL 事务与锁的深入学习笔记

之前学习MySql的简单使用的时候.学习了事务的概念,事务的隔离级别,以及何时使用事务,怎么使用事务等等比较简单的东西。最近不停的在想数据库内部是如何实时事务的,如何避免脏数据的。数据库内部是否有与并发编程中的相似的锁概率呢。Google查阅了相关资料后,记录一下学习笔记。mysql的锁  锁的概率:某个链接对某个资源(可以是一张表,也有可能是一行或者多行记录)进行加锁操作,根据锁的不同功能,决定在

不能说的秘密的博客 9725

mysql学习笔记-锁

则先在 B+ 树中定位到这条记录的位置,然后获取记录的 X锁,将该记录彻底删除掉(就是把记录彻底移入垃圾链表),最后再插入一条新记录。这个定位待修改记录在B+树中位置的过程看成是一个获取X锁 的 锁定读 ,新插入的记录由 INSERT 操作提供的 隐式锁 进行保护。则先在 B+ 树中定位到这条记录的位置,然后再获取一下记录的 X锁,最后在原记录的位置进行修改操作。一般情况下,新插入一条记录的操作并不加锁,通过一种称之为 隐式锁 的结构来保护这条新插入的记录在本事务提交前不被别的事务访问。

weixin_37693463的博客 328

MySQL学习笔记 —— 锁篇

## 一、全局锁 执行全局锁后,**整个数据库**就处于只读状态了。通常用于全库逻辑备份,这样在备份数据库期间,不会因为数据或表结构的更新,而出现备份文件的数据与预期的不一样。 如果数据库的引擎支持的事务支持可重复读的隔离级别,那么**在备份数据库之前先开启事务,会先创建 Read View,然后整个事务执行期间都在用这个 Read View**,而且由于 MVCC 的支持,备份期间业务依然可以对数据进行更新操作。 因为在可重复读的隔离级别下,即使其他事务更新了表的数据,也不会影响备份数据库时的 Read

m0_56602092的博客 345

Mysql七种锁学习笔记

Mysql七种锁学习笔记 InnoDB是一种可以支持事务的存储引擎,并且可以支持行锁,但是InnoDB的行锁是实现在索引上的,而不是锁在物理行记录上,所以如果访问没有命中索引,也无法使用行锁,将要退化成表锁,所以,InnoDB一定要建好索引,否则会导致锁粒度较大,影响数据库性能。 自增锁 auto_increment在mysql中很常见,通常会将主键ID设置为自增长,自增的幅度可以通过...

会呼吸的鱼 1186
上一篇: Mysql学习笔记------事务
下一篇: JVM学习笔记---------类加载机制
programmer_hard
博客等级 码龄8年 3粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值