【MySQL】-锁的使用

news/2024/6/29 11:48:25 标签: mysql, 数据库,

1、的粒度分类

1、全局

一般用于数据库备份,整个库只读

FLUSH TABLES WITH READ LOCK

2、表级

细分为:

1)意向 Intention

事务A对表加行级,这行记录就只能读不能写。

事务B申请增加表级,如果他申请成功了,那么他就可以修改表中的任意一行记录。这就发生了冲突。

1、意向并不是直接定资源,而是为通知其他事务,以防止它们在资源上设置不兼容
2、意向并不是直接由用户请求的,而是由 MySQL 管理的。

  • 意向共享 IS:事务打算设置共享(读),此时不希望其他事务设置排他
  • 意向排他 IX

在触发意向事务提交或者回滚后释放

2)AUTO_INC

在表主键设置ID自增,插入或删除数据时,定表。在插入操作完成后立即释放,而不是在事务结束时释放。所以高并发下,不会引起自增异常。

3)字典

一般在DDL 处理表字段、索引、事务等数据库定义语句时,添加

细分为:

  • 1)共享字典(SHARED-MDL ):允许其他事务读
  • 2)排他字典:禁止其他事务读、写

4)表级排他/共享

5、行级

行级都是定索引。

针对主键索引,如果表中不存在,则选择唯一非空索引,否则选择隐藏字段 row_id

1)Record Lock:行

2)Gap Lock:范围  左开右开

3)Next-Key Lock:范围 左开右闭

update t where id = 6

由于表 中没有 id=6 的记录,则产生临键(5,10】,并且是等值查询,优化为(5,10)

select * from t where id>=10 and id<11 for update

产生间隙(10,15)

select * from t where id>10 and id<16 for update

产生临键(10,15】

2、级别分类

共享 S:设置读,允许其他事务读取,禁止其他事物申请写

SELECT ... LOCK IN SHARE MODE;

排他 X:设置写,禁止其他事物设置读、写

SELECT ... FOR UPDATE;

3、的使用方式

1)乐观:通过CAS的机制,使用参数status、version等字段比对前后值

2)悲观:进行实际的加操作 


http://www.niftyadmin.cn/n/5431917.html

相关文章

Docker基本配置及使用

Docker基本配置及使用 使用步骤 1.卸载旧版 代码如下&#xff1a;首先如果系统中已经存在旧的Docker&#xff0c;则先卸载 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engin…

Steinberg Cubase Pro 13详细图文安装教程 音频录制与编辑

Steinberg Cubase Pro 13凭借其强大的功能、直观的操作界面以及丰富的插件支持&#xff0c;成为了音乐创作的终极利器。无论你是专业音乐制作人还是音乐爱好者&#xff0c;它都能帮助你探索无限创意可能&#xff0c;创作出属于自己的音乐佳作。 下载并打开安装包&#xff0c;双…

【Spring高级】Bean的初始化和销毁有哪些方式

目录 初始化注解 PostConstruct实现 InitializingBean 接口bean initMethod 属性三种初始化方法顺序 销毁注解 PreDestroy实现 DisposableBean 接口Bean destroyMethod 属性三种销毁方法顺序 初始化 Bean初始化可以有以下三种方法&#xff1a; PostConstruct 标注的初始化方法…

27.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据推测功能的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a; 易道云信息技术研究院VIP课 上一个内容&#xff1a;26.实现生成日志…

linux 使用docker安装 postgres 教程,踩坑实践

linux 使用docker安装 postgres 教程 踩坑实践,安装好了不能远程访问。 防火墙已关闭、postgres 配置了允许所有ip 访问、网络是通的。端口也是开放的&#xff0c;就是不能用数据库链接工具访问。 最后发现是云服务器端口没开 ,将其打开 到这一步完全正确了&#xff0c;但是…

GAMMA数据处理(六)

最近进行Sentinel-1数据处理,需要用到拼接三个iw的命令,找了一下 但是这样大的数据提取进来,处理速度很慢,后面可能要进行研究区的裁剪,除了开始用的方法,直接在生成的burst_tab文件里面修改参数:删去自己不需要的iw,也就是下面说的这种方法 在指导手册上面看到了其他的…

网络安全JavaSE第一天

1.环境的搭建 首先从 http://www.oracle.com 上下载对应的 JDK 版本&#xff0c;然后安装&#xff08;或解压&#xff09;到一个没有中文没有空格 的目录中。如&#xff1a;d:\jdk-21 然后在系统环境变量中先定义一个叫 JAVA_HOME 的环境变量&#xff0c;它的值就是JDK的安装/…

Spring-Kafka笔记整理

引入依赖<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId> </dependency>配置application.propertiesspring.kafka.bootstrap-servers192.168.99.51:9092编写kafka的配置类Configuration …