首页 > 数据库 >MySQL的间隙锁

MySQL的间隙锁

时间:2023-05-26 23:22:34浏览次数:44  
标签:加锁 间隙 next 索引 key MySQL

什么是间隙锁?

间隙锁就是在MySQL的一个范围锁,对某个不存在数据的范围进行加锁,加锁后,不能在这个范围内插入数据;在可重复读事务隔离级别下,默认使用的是next-key Lock(行锁+间隙锁);

间隙锁是为了解决什么问题?

间隙锁就是MySQL在Innodb存储引擎在可重复读的事务隔离级别下为了解决当前读的情形下幻读的问题;

什么情形下MySQL会加间隙锁?

在当前读才会出现加锁的情况,快照读是不会进行加锁的;大致分为聚簇索引字段、普通索引字段、普通字段,精准查询,范围查询。间隙锁是两个记录之间的空隙,当唯一索引精准匹配时,next-key lock会优化成行锁;当普通索引和唯一索引范围查询时,则会加next-key lock(行锁+间隙锁);当唯一索引或普通索引匹配不到值时,则next-key lock会优化成间隙锁;

标签:加锁,间隙,next,索引,key,MySQL
From: https://www.cnblogs.com/mojianheng/p/17430013.html

相关文章

  • MySQL刷题记录
    1. select*fromemployeesorderbyhire_datedesclimit1; 笔记: limit 0,1;使用limit关键字从第0条记录向后读取一个,也就是第一条记录  2.select*fromtestLIMIT 3OFFSET 1;(在mysql 5以后支持这种写法)当limit和offset组合使用的时候,limit后面只......
  • rhel 7.3搭建mysql的主从复制—非单机场景
    文档课题:rhel7.3搭建mysql的主从复制—非单机场景.数据库:mysql8.0.27系统:rhel7.3安装包:mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz环境介绍:1、理论知识master将操作语句记录到binlog日志,然后授予slave远程连接权限(master需开启binlog,为数据安全考虑,slave也开启binlog).s......
  • mysql在执行start slave命令时报错"ERROR 1872 (HY000)"
    问题描述:mysql在执行startslave命令时报错"ERROR1872(HY000)",如下所示:数据库:mysql8.0.27系统:rhel7.31、问题重现mysql>startslave;ERROR1872(HY000):Slavefailedtoinitializerelayloginfostructurefromtherepository2、异常原因从库已经存在之前的relay......
  • rhel 7.3安装mysql 8.0.27
    文档课题:rhel7.3安装mysql8.0.27.系统:rhel7.364位数据库:mysql8.0.27安装包:mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz1、安装前检查1.1、系统版本[root@leo-mysql-master~]#cat/etc/*releaseNAME="RedHatEnterpriseLinuxServer"VERSION="7.3(Maipo)"ID=......
  • 阿里云服务器Linux MySQL root 密码忘记了如何操作?
    阿里云服务器Linux MySQL root密码忘记了如何操作?假如我们使用的MySQL数据库忘记的账号密码,是能够土工调节配置文件,然后跳过密码方式登录到数据库的。然后在数据库里面修改账号和密码,通常在默认情况下账号为root具体操作步骤如下:1】编辑MySQL配置文件my.cnf【注】在具体的操作......
  • DBeaver连接mysql数据库和备份恢复那些事
    引言上一篇文章,主要讲解的是如何使用DBeaver连接oracle数据库,同时和大家扩展的聊了聊oracle的监听器了。在DBeaver这套文章的第1篇中,我就介绍了为什么要引入DBeaver?为了替换掉团队中现有的商用软件,比如大家连接mysql时,最喜欢使用的navicat。既然要替换掉navicat,那DBeaver就要满足na......
  • 解决mysqldump 导出中文乱码的问题
    导数据库mysqldump-uroot-p111111-P3306-h127.0.0.1test>/data/test.sql导出后的数据库打开是乱码,如下:开始以为打开的方式不对,就用记事本打开后,用utf-8的编码格式另保存下结果打开后,仍然是乱码。这时候,猜测是不是数据库的字符集的编码有问题,然后进入数据库,输入命......
  • python操作mysql数据pymysql-执行语句select查询返回值直接返回dict字典类型或者list
    一、返回tuple元组类型(默认)fetchall()将结果放在二维数组里面,每一行的结果在元组里面importpymysqldefexport(table_name):conn=pymysql.connect(host='118.24.3.40',user='jxz',password='123456',db......
  • 源码安装mysql
    前言1.在下面网站找到需要安装的mysql版本https://downloads.mysql.com/archives/community/注意要选择的操作系统为linux-generic2.kafka安装方式链接有空可测试下:https://blog.csdn.net/m0_46192647/article/details/123424090一.mysql部署systemctlstopfirewalld&&s......
  • 一文教会你用Apache SeaTunnel Zeta离线把数据从MySQL同步到StarRocks
    在上一篇文章中,我们介绍了如何下载安装部署SeaTunnelZeta服务(3分钟部署SeaTunnelZeta单节点Standalone模式环境),接下来我们介绍一下SeaTunnel支持的第一个同步场景:离线批量同步。顾名思意,离线批量同步需要用户定义好SeaTunnelJobConfig,选择批处理模式,作业启动后开始同步数据,当......