封锁机制以及读锁和写锁的区别

【史上最全面esp32教程】网络篇和tcp/ip的使用 ESP32史上最全面wifi和tcp/ip连接及示例程序 阅读详情

我们在开发中也许都有感受到,数据库的并发操作会带来许多问题,比如丢失更新、不可重复读、读脏数据(幽灵数据)等等,常见的比如自动售票系统,站点1、2同时读出剩余的票数n张,站点1售出一张票,并将n-1写入数据库,站点2也售出一张票并将n-1写入数据库,但是我们都知道,应剩余n-2张票,这就是典型的丢失数据更新的实例。为避免该类问题的产生,我们采用了封锁机制,简单点就是当一个线程要对数据库进行相关操作时,先给数据库加上适当的锁,以此来避免其他线程对数据库进行操作而带来的干扰。
并发操作之所以产生错误,是因为不同线程并发执行事务互相干扰造成的。所以我们要对事务的并发操作进行控制,即并发控制。一般DBMS进行并发控制的方法是封锁机制和事务机制。
封锁就是对数据表、数据行等操作之前,先向系统请求对其加锁,说通俗点就是操作之前先声明权限。
封锁的周期(环节):申请加锁、获得锁权限、释放锁权限
最基本的封锁类型有两种:排它锁(Exclusive Locks,X锁)和共享锁(Share Locks,S锁)。

  • 排它锁也称独占锁、写锁或X锁,若sessionA获得某数据表的排他锁权限,那么sessionA只能对该表进行读取或修改,其他session既不能读取也不能修改该表,更不能对该表加任何类型的锁,直到sessionA释放排它锁权限。加锁方式:lock tables tablename write;操作如下:
    sessionA:
    这里写图片描述
    sessionB:
    这里写图片描述
    从上图操作可以看出sessionA获得ha表排它锁权限以后sessionB执行访问ha表操作以后并没用显示ha数据而是在等待sessionA释放锁权限。

  • 共享锁也称读锁或S锁,若sessionA获得某数据表的共享锁权限,那么任何session(包括sessionA)只能对该表进行读取,不能修改该表,其他session可以对该数据表继续加S锁但不能加X锁,直到sessionA释放共享锁权限。加锁方式:set tables tablename read;操作如下:
    sessionA:
    这里写图片描述
    sessionB:
    这里写图片描述
    从上图操作可以看出,sessionA获得ha表共享锁权限以后,sessionA和sessionB都可以访问ha表,但是当sessionA想更改ha表时直接报错(ERROR 1099 (HY000): Table ‘ha’ was locked with a READ lock and can’t be updated ha表有一个共享锁不能被修改),sessionB更改ha表时并没有显示修改成功,而是在等待sessionA释放共享锁权限。

  • 注意,在sessionA同时获得某数据表的S和X锁权限时,sessionA只能select该数据表,其他session将不能对该表进行任何操作,包括select、update、drop、delete、lock等等,直到sessionA释放相关锁权限。

Statistics and Machine Learning Toolbox Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具 立即下载

相关推荐

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

本文为本人在安装pgvector中踩过的坑,已找到解决方法,现向大家分享。

m0_62627802的博客 2万+

读锁和写锁的区别

共享锁(S锁)又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S 锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。 排他锁(X锁)又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不能再读...

fanrey123的博客 5844

SNAP计算哨兵二号的叶面积指数(LAI)

对于哨兵二号数据以及LANDSAT8数据,SNAP提供已经集成好的模块计算LAI。在Optical->Thematic Land Processing->Biopyhsical Processor目录下面。 对于经过Sen2Cor处理好的数据,需经过重采样才可进行计算。重采样工具在Raster->Geometric->Resampling。 如果选择Biopyhsical Processor S2_10m进行计算,需要将所有的波段都重采样为10米(哨兵二号的第二波段为10米,可据此波

gxwwww的博客 9417

十三、读锁和写锁

读读场景下不会出现线程安全问题,读写、写写场景下会出现线程安全问题。在没有写操作的时候,多个线程去读不会产生问题,但是当有一个线程想要去写操作时,就不应该有其他读线程和写线程。读写锁顾名思义就是把一把锁分为读锁和写锁两部分,读锁允许多个线程共同获得,写锁只允许一个线程获得。💡 问题:读操作为什么要加锁?在读取数据的方法中如果要那这个数据做一些业务处理,此时没有加锁被其他线程给改变了,就会造成类似于“脏读”的现象。内部维护了两个API规范,读锁和写锁。线程进入读锁的条件:线程进入写锁的条件:读写锁有以下三个

weixin_46784756的博客 1381

3GPP Release与UE Category:无线通信标准演进与终端能力分级全解析

在蜂窝移动通信领域,技术标准的演进与终端设备的能力分级是理解整个产业发展的核心框架。其基本原理由国际标准组织3GPP通过周期性发布的技术规范版本(Release)来定义,每个Release都像一份阶段性的技术蓝图,规定了网络与终端应支持的新功能与性能基线。这种标准化机制的技术价值在于确保了全球设备的互联互通与网络的平滑升级,为从4G LTE到5G NR乃至未来的演进提供了清晰路径。在这一框架下,终端能力分级(如LTE时代的UE Category)是将标准转化为具体设备性能的关键环节,它直接定义了终端在射频和

weixin_34098209的博客 331

Phantom Omni的力与力矩操作

*本说明为对Phantom Omni的力与力矩操作 ****************虚拟夹具的力读取与控制************************ 1、首先力的读取要声明【全局变量】 hduVector3Dd F;//三维矢量力(x,y,z三个方向的力) 2、对力的控制可以采用配置函数Set()与Get()函数; 3、对力觉的控制或读取操作需要放到【回调帧】开始与结束之间,如例子

xuliang355的博客 2562

锁系列二之读写锁

从数据操作的类型划分 对于 InnoDB 引擎来说,读锁和写锁可以加在表上,也可以加在行上。 一、读锁 也称为 共享锁 、英文用 S 表示。针对同一份数据,多个事务的读操作可以同时进行而不会互相影响,相互不阻塞的。 二、写锁 也称为 排他锁 、英文用 X 表示。当前写操作没有完成前,它会阻断其他写锁和读锁。这样就能确保在给定的时间里,只有一个事务能执行写入,并防止其他用户读取正在写入的同一资源。 1、锁定读 在采用加锁方式解决脏读,不可重复读,幻读这些问题的时候,读取一条记录时需要获取该记..

勇心在馨 1279

电路研究9.4——合宙Air780EP的LuatOS、CSDK跟标准AT

 C-SDK、AT指令、LuatOS

esmember的博客 1116

读锁和写锁

读锁(Shared Lock)和写锁(Exclusive Lock)是数据库中常见的锁类型,用于控制并发读写操作的访问权限。而写锁适用于只允许一个事务修改数据的场景,保证了写操作的原子性和一致性。需要注意的是,读锁和写锁是在事务中通过数据库管理系统(如MySQL)自动实现的,开发者无需手动操作锁。数据库管理系统会根据事务的隔离级别和具体的锁策略来控制锁的获取和释放。在使用读锁和写锁时,需要根据具体的业务需求和隔离级别来选择合适的锁,以确保数据的一致性和并发性。

Li2992673708的博客 2117

Python爬虫实战:5分钟搞定微信公众号文章阅读数、点赞数抓取(附完整代码)

本文详细介绍了如何通过Python爬虫技术自动化抓取微信公众号文章的阅读数和点赞数。文章从数据源分析入手,分步讲解了获取文章列表与提取单篇统计数据的完整流程,并提供了应对平台风控的策略与工程化整合方案,帮助开发者高效、合规地完成数据采集任务。

ansible6ops的博客 1337

小白 虚拟机 kali_Linux安装 详细教程

安装版本:VMmare workstation pro kali_Linux 安装环境:Window10 首先我们先了解一下什么是kali_linux: Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行

m0_50917178的博客 9万+

MySQL中什么是读锁和写锁

写锁:也叫排他锁,英文为(X),针对同一份数据,只能有一个事务(事务A)进行操作,其他事务(事务B)阻塞,不能读,也不能写,只有等事务A执行完毕,事务B等其他事务才能进行操作。读锁:针对同一份数据,多个事务的读操作可以同时进行互不影响,相互不阻塞。在Innodb中,读锁和写锁可以加载表上,也可以加在行上(行锁和表锁),读锁也叫共享锁(S),写锁也叫排他锁(X)从数据操作的类型划分,可以分为。

qq_41473691的博客 2771

245. 项目195:简易文字冒险游戏——《跟老吕学Python·新手》

如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过优快云私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。老吕珍视每一位读者的反馈和支持,期待与您共同学习、共同进步,共同创造美好的未来!我们的目标是不仅教会您Python语言,更是培养您解决问题的思维方式。请随意翻阅,按照自己的节奏学习,让这本专栏成为您编程旅程中的可靠伙伴。开发一个简易的文字冒险游戏,通过文本描述场景和事件,让玩家通过选择不同的选项来推动故事发展。

Python老吕的博客 712

mysql的封锁机制以及读锁和写锁的区别

mysql的封锁机制以及读锁和写锁的区别

youcijibi的博客 4266

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql 写锁和读锁_mysql的封锁机制以及读锁和写锁的区别

我们在开发中也许都有感受到,数据库的并发操作会带来许多问题,比如丢失更新、不可重复读、读脏数据(幽灵数据)等等,常见的比如自动售票系统,站点1、2同时读出剩余的票数n张,站点1售出一张票,并将n-1写入数据库,站点2也售出一张票并将n-1写入数据库,但是我们都知道,应剩余n-2张票,这就是典型的丢失数据更新的实例。为避免该类问题的产生,我们采用了封锁机制,简单点就是当一个线程要对数据库进行相关操作...

weixin_34941214的博客 366

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql四级封锁_mysql的封锁机制以及读锁和写锁的区别

我们在开发中也许都有感受到,数据库的并发操作会带来许多问题,比如丢失更新、不可重复读、读脏数据(幽灵数据)等等,常见的比如自动售票系统,站点1、2同时读出剩余的票数n张,站点1售出一张票,并将n-1写入数据库,站点2也售出一张票并将n-1写入数据库,但是我们都知道,应剩余n-2张票,这就是典型的丢失数据更新的实例。为避免该类问题的产生,我们采用了封锁机制,简单点就是当一个线程要对数据库进行相关操作...

weixin_42301086的博客 291

mysql 读锁和写锁

mysql 读锁 写锁

Bug制造者 284

数据库里的“锁”事:共享锁、排他锁与三级封锁协议

事务B读取余额时,如果共享锁未释放,事务B可能会读到“80元”的临时值。银行转账场景中,事务A将用户A的余额从100元改为80元,事务B同时将余额从100元改为50元。假设事务A和事务B都想读取“用户余额”表,共享锁会让它们同时进入“共读区”。但如果事务C想修改余额,它必须等A、B都离开后,才能进入“修改区”。事务A正在修改“库存表”中的某件商品数量,排他锁会阻止事务B同时修改同一商品。时,不妨想想这些锁背后的故事——它们不仅是代码的关键词,更是数据世界的“守门人”!,以及它们的“三重保护伞”

JakeMa1024的博客 1774

并发控制——封锁、活锁和死锁

封锁 封锁就是事务T在对某个数据对象(表、记录等)操作之前,先向系统发出请求,对其枷锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象 封锁是实现并发控制的一个非常重要的技术 封锁类型 基本封锁类型 排它锁(eXclusive lock,简称X锁) 共享锁(Share lock,简称S锁) 排它锁 排它锁又称为写锁、X锁 若事务T1对数据对象A加上X锁,则只允许T1读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T1释放A上的

MrLiuの甜蜜小屋 4762

数据库知识整理 - 并发控制(封锁、两段锁协议、意向锁)

主要内容 前提 并发操作带来的数据不一致性 封锁 两种基本封锁类型  封锁协议 活锁和死锁 活锁 死锁 并发调度的可串行性 两段锁协议 封锁的粒度 多粒度封锁 意向锁 锁的强度   前提 并发控制技术与前一篇提到的数据库恢复技术是主要的事务处理技术,同时并发控制机制和数据库恢复机制是数据库管理系统(DBMS)的重要组成部分。 在单处理机系统中,事务的并行执行实际上是这...

春雪阁 1万+

DB2锁介绍[转]

1 DB2 多粒度封锁机制介绍1.1 锁的对象DB2支持对表空间、表、行和索引加锁(大型机上的数据库还可以支持对数据页加锁)来保证数据库的并发完整性。不过在考虑用户应用程序的并发性的问题上,通常并不...

cuishuobi4947的博客 835

db2 与 Oracle 的锁的区别和比较

原来一直在做 Oracle ,“读不阻止写,写不阻止读”的想法扎根很深,但是在用 DB2 的过程中总感觉 DB2 的锁的实现、使用以及管理都麻烦些。1.Oracle通过具有意向锁的多粒度封锁机制进行并发控制,保证数据的一致性。其DML锁(数据锁)分为两个层次(粒度):即表级和行级。通常的DML操作在表级获得的只是意向锁(RS或RX),其真正的封锁粒度还是在行级;DB2也是通过具有意向锁的多粒度封锁

JesseChan's Blog 1043

Mysql事务和锁

内容摘抄整理自:微信公众号 CyC2018 事务 ACID D持久性,使用重做日志保证持久性 ACID怎么理解 ​ I一致性是目的,是指数据库从一个正确的状态转移到另一个正确的状态。A原子性和D隔离性,是I的手段,只有保证原子性和隔离性,才能保证一致性,当然隔离性又分为好几种不同的隔离级别。而持久性是为了应对mysql崩溃的情况,即使数据库崩溃数据库的数据结果也不会丢失,使用重做日志保证持久性。 MYSQL默认采用自动提交模式,也就是说如果不使用start transaction语句,那么每个mysql查

weixin_44137260的博客 698

Oracle和DB2锁的 比较

 摘自牛新庄的博客。 1 引言 在关系数据库(DB2,Oracle,Sybase,Informix和SQL Server)最小的恢复和交易单位为一个事务(Transactions),事务具有ACID(原子性,一致性,隔离性和永久性)特征。关系数据库为了确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读"脏"数据,无"幻像"读),数据库中引入了并发(锁)机制。基本的锁

suliqiang的专栏 1905

完整性和一致性基石——GBase8s锁浅析

加锁的目的,其实是为了保证数据的一致性。 当多个线程并发访问某个数据时,加锁,可以保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。

麒思妙想 1624

数据库基础

1. 什么是事务: 是访问数据库的一个操作序列,数据库通过一系列事务来存取数据。 事务特性ACID: 原子性:要么都执行,要么都不执行。 一致性:事物执行完成后数据库从一个一致状态到另一个一致状态。 隔离性:事物所做的操作在提交之前,对其他事物不可见。 永久性:事物一旦提交,对数据库做的改变会永久的存储在数据库中。 当事物串行执行,隔离性一定是可以满足的,只要满足...

asada7131的博客 113

DB2和Oracle的并发控制(锁)比较

<br />转载于:http://soft.chinabyte.com/270/7513770.shtml<br /> <br />1 引言<br />  在关系数据库(DB2,Oracle,Sybase,Informix和SQL Server)最小的恢复和交易单位为一个事务(Transactions),事务具有ACID(原子性,一致性,隔离性和永久性)特征。关系数据库为了确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读"脏"数据,无"幻像"读),数据库中引入了并发(锁)机制。基本的

zgmzyr的专栏 699
上一篇: 解决php向mysql数据库插入数据乱码问题
下一篇: windows10更新以后古格浏览器部分汉字显示成方框解决方案
Jeaforea
博客等级 码龄10年 30粉丝 29原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值