首页 > 数据库 >Mysql锁机制

Mysql锁机制

时间:2024-11-22 20:45:29浏览次数:3  
标签:RR 间隙 记录 意向锁 Mysql 机制 表锁 行锁

1、全局锁

会锁住整个数据库,使得其他事务只能进行读操作,写操作将被阻塞。通常用户数据库备份。

2、表级锁

种类

(1)读锁,又称贡献锁,多个读操作可以同时进行,但不能进行写操作。

(2)写锁:又称排他锁,当前客户端操作没有完成,会阻塞其他客户端的读写操作。

存储引擎默认锁:MyISAM

特点:对整张表加锁,开销小,力度大,无死锁,但容易发生锁冲突。

3、行级锁

种类

(1)行锁:锁定的是某行记录,防止其他事务对其进行update或delete操作,在RC、RR隔离级别下都支持。

(2)间隙锁:锁定索引间隙记录(不包含改记录),左开右开区间,确保索引间隙记录不变,防止其他事务在该间隙insert,避免产生幻读(前后读的数据集不同),在RR隔离级别下支持。

(3)临键锁:行锁和间隙锁的组合。锁住索引间隙记录(包含该记录),左开右闭区间,在RR隔离级别下支持。

4、意向锁

(1)解决表锁和行锁冲突,InnoDB加入意向锁,使得表锁不用检查每行数据是否加锁,只需检查是否有意向锁即可。

(2)分类

意向共享锁(IS):与表锁共享锁兼容(read),与表锁排他锁互斥。在准备给表加入共享锁(S)时,需要先获得该表的IS锁。

意向排他锁(IX):与表锁共享锁和排他锁互斥。在准备给表加入排他锁时,需要先获得该表的IX锁。

标签:RR,间隙,记录,意向锁,Mysql,机制,表锁,行锁
From: https://blog.csdn.net/m0_75199504/article/details/143982440

相关文章

  • 如何对Mysql数据库进行优化
    目录引言优化的时机优化策略1.索引优化2.查询优化3.架构优化4.事务和锁机制优化5.配置优化6.硬件优化7.性能监控与调优工具案例分析案例1:简化查询逻辑案例2:使用索引结语引言在现代应用中,数据库的性能至关重要。MySQL作为流行的开源关系型数据库管理......
  • 常见面试题----深入源码理解MQ长轮询优化机制
    引言在分布式系统中,消息队列(MessageQueue,MQ)扮演着至关重要的角色。MQ不仅实现了应用间的解耦,还提供了异步消息处理、流量削峰等功能。而在MQ的众多特性中,长轮询(LongPolling)机制因其能有效提升消息处理的实时性和效率,备受关注。本文将深入源码,探讨MQ长轮询优化机制,从底层原......
  • (超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
    目录引言1.问题分析1.1警告内容解析1.2产生原因2.解决方案2.1更新驱动类2.2更新JDBCURL2.3升级MySQLConnector/J依赖2.4清理缓存和重建项目3.示例代码4.注意事项总结引言在使用MySQL数据库时,许多开发者会遇到以下警告:Loadingclass`com.my......
  • mysql case多条件比较
    mysqlcase多条件比较##正确写法then(100-tt.fineAmt)也可以写表达式SELECTorder_no,CASEWHEN(days>=1ANDdays<10)THEN'0'WHEN(days>=10ANDdays<20)THEN'1'WHEN(days>=20ANDdays<30)THEN'4'WHEN(d......
  • MySQL初学之旅(4)表的设计
    目录1.前言2.正文2.1第一范式2.2第二范式2.3第三范式2.4表的设计方法3.小结1.前言哈喽大家好吖,今天继续给大家分享MySQL的学习——表的设计,这一部分没有太多语法的讲解,有许多设计思路以及规则的讲解与剖析,那么话不多说让我们开始吧。2.正文表的设计的核心就是三......
  • python+pymysql(16)
    python操作mysql一、python操作数据库1、下载pymysql库,方法一:pip3installpymysql或pipinstallpymysql方法二:在pycharm中setting下载pymysql===============================2、打开虚拟机上的数据库===============================3、pymysql连接(1)连接......
  • Ubuntu 22.04 安装docker及部署mysql
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、查看Ubuntu内核版本二、安装docker前的环境准备1.更新系统软件包列表2.安装必要的依赖包添加Docker官方的GPG密钥添加Docker官方的软件源Ubuntu22.04Ubuntu20.04Ubuntu18.04再次更新......
  • python批量修改mysql中某个字段的长度
    突然被告知DB中某个关键字段长度要增大,涉及到N张表,改起来超麻烦,想着用代码改,比较少写这种增删表或者改变表结构的代码,记录下。importpymysqldefmodifyFieldVarcharLen(config,new_column_length):connection=pymysql.connect(**config)try:withconn......
  • 【MySQL主从复制】揭秘高效数据库架构,轻松应对大数据挑战!
    MySQL主从复制概述MySQL主从复制是一种数据复制技术,用于将一个MySQL数据库服务器(主库)的数据实时复制到一个或多个MySQL数据库服务器(从库)。这种机制常用于实现读写分离、负载均衡和数据备份等目的。主从复制的基本步骤配置主库:在主库上启用二进制日志,并创建一个具有复......
  • glibc 内存分配与释放机制详解
    本文以一次线上故障为基础介绍了使用glibc进行内存管理可能碰到问题,进而对库中内存分配与释放机制进行分析,最后提供了相应问题的解决方案。一、引言内存对象的分配与释放一直是后端开发人员代码设计中需要考虑的问题,考虑不周极易造成内存泄漏、内存访问越界等问题。在发生......