首页 > 其他分享 >013 学习笔记--锁

013 学习笔记--锁

时间:2023-07-26 10:25:04浏览次数:40  
标签:itcast -- 备份 笔记 p1234 013 dbtest 数据库

锁:

全局锁:锁定数据库中的所有表

表级锁:每次操作锁住整张表

行级锁:每次操作锁住对应的行数据

1.概述

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CUP、RAM、IO)的争用以外,数据也是一种

供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性

能的一个重要因素。从这个角度说,锁对数据库而言显得尤其重要,也更加复杂。

2.全局锁:锁定数据库中的所有表

全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML(INSERT\UPDATE\DELETE)的写语句,DDL(建库、建表、建字段)语句,已经更新操作的事务提交语句都将被阻塞。

某典型的使用场景是全库的逻辑备份,对所有的表进行锁定,从而获取一致性试图,保证数据的完整性。

添加全局锁:flush tables with read lock;

备份数据库:mysqldump-uroot-p1234 itcast>itcast.sql (uroot用户名,p1234密码,itcast数据库,itcast.sql备份的文件名称)eg:

mysqldum-uroot-p1234 dbtest>d://dbtest.sql

注:mysqldum为mysql提供的工具

解锁:unlock tables;

 特点:数据库中添加全局锁,是一个比较重的操作,存在以下问题:

  • 如果在主库上备份,那么备份期间都不能执行更新,业务基本上就的停止
  • 如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志(binlog),会导致主从延迟。

在InnoDB引擎中,我们可以在备份时加上参数--single-transaction参数来完成不加锁的一致性备份。如下所示:

mysqldum--single-transaction-uroot-p1234 dbtest>d://dbtest.sql

3.表级锁:每次操作锁住整张表

 表级锁,每次操作锁足整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。

 

4.行级锁:每次操作锁住对应的行数据

 

标签:itcast,--,备份,笔记,p1234,013,dbtest,数据库
From: https://www.cnblogs.com/YYkun/p/17581683.html

相关文章

  • playwright使用
    安装时问题CMD执行playwrightinstall时出现DownloadingChromium115.0.5790.24(playwrightbuildv1067)fromhttps://playwright.azureedge.net/builds/chromium/1067/chromium-win64.zipError:unabletoverifythefirstcertificateatTLSSocket.onConnectSec......
  • Cilium系列-5-Cilium替换KubeProxy
    系列文章Cilium系列文章前言将Kubernetes的CNI从其他组件切换为Cilium,已经可以有效地提升网络的性能.但是通过对Cilium不同模式的切换/功能的启用,可以进一步提升Cilium的网络性能.具体调优项包括不限于:启用本地路由(NativeRouting)完全替换KubeProxyI......
  • 新pc
    withopen('p1.mp4','wb')asfile:withopen('dash.json','r',encoding='utf-8')asf:json_data=f.read()dt=json.loads(json_data)m3u8=dt['data']['program&......
  • 企业通讯软件都有哪些?4款常见的企业通讯软件推荐
    在现代企业中,高效的内部沟通和协作是成功的关键。为了满足这一需求,越来越多的企业开始使用专门的企业通讯软件。这些软件提供了一系列功能,包括即时通讯、视频会议、文件共享等,帮助团队成员更好地协作和沟通。那么企业通讯软件都有哪些?下面推荐几款比较常见的企业通讯软件。  ......
  • 11
    defgetHighLowFre(image):f=torch.fft.fft2(image)#计算频率freqs=torch.fft.fftfreq(image.shape[-1])#print(freqs)#设定阈值,用于分离高频和低频信息threshold=0.1#创建掩码,用于分离高频和低频信息mask=(freqs.abs()<t......
  • 转:MySQL数据库给表添加索引
    MySQL数据库给表添加索引   ......
  • fastapi文件上传下载
    importosimporttimefromfastapiimportAPIRouter,File,UploadFilefromfastapi.responsesimportFileResponserouter=APIRouter(tags=['Upload'],prefix='/upload')@router.post("",summary='文件上传')defcreate(up......
  • SQL语言可以分为四类
    SQL(StructuredQueryLanguage,结构化查询语言)是用于管理关系数据库系统的标准化语言。SQL语言可以分为以下几个方面:数据定义语言(DDL):用于定义和管理数据库中的结构,包括创建、修改和删除数据库对象(如表、视图、索引等)。例如:CREATETABLE、ALTERTABLE、DROPTABLE等。......
  • 关于找工作
    其实是普通程序员才找不到工作由于程序员这行鱼龙混杂,培训的,转行的,毕业的,离职的,水平层次不齐,导致市场上对于程序员的需求远远供大于求,以为随便背背八股文就能月薪过万,这个市场薪资都被他们拉低了,真的是扰乱市场个人还是对这个问题还是比较有话语权的,1月初面试,那会疫情还没有完全......
  • @Value("${dbpc.path}")和@Value("#{dbpc.path}")区别
    这两个注解都可以用来将值注入到JavaBean的字段中。但是,它们的使用方式略有不同。@Value("${dbpc.path}")是Spring框架中的注解之一,用于从Spring配置文件中获取属性值,并将其注入到JavaBean的字段中。该注解可以用于注入基本类型、字符串、数组、集合、对象等类型的值。@Value(......