
MySQL面试真题
似来
一个老程序员
展开
-
一线大厂面试真题——执行SQL响应比较慢,你有哪些排查思路
这样的话,我们就可以根。那垂直切分的意思是,将一张单表中的多个列,按照业务逻辑把关联性比较大的列放到同一张表中去。1000表,然后,把后缀为0-100的表放到同一个数据库实例中,然后,100-200的。键把请求路由到不同数据库实例,从而让每一个数据库实例承担的流量比较小,达到提高数据库性。在流量比较大的场景中,可以增加从库来提高数据库的负载能力,从而提升数据库的总体性。况下,除了对数据库本身的调整以外,还可以增加缓存。支持一主多从的分布式部署,我们可以将主库只用来处理写数据的操作,而多个从库只用来。原创 2024-01-22 09:58:50 · 704 阅读 · 0 评论 -
一线大厂面试真题——B树和B+树的区别什么?
做平衡二叉树的机制。它的规则是左右两个子树的高度差的绝对值不能超过1。因此,从这个特征来看,在存储同样数量的情况下,平衡二叉。它的规则是左子树的所有子节点都要小于它的根节点,而右侧子节点要大。的分叉就相当于树形数据结构中的节点,树上的节点可以从树根无限延伸。个关系型数据库,数据的关联性是非常强的,区间访问是常见的一种情况,+树的数据是存储在叶子节点上的,并且,叶子节点的数据是用双向链表。树是一种数据结构,它的结构形状如同一棵树木,但是是倒立的状态。+树中的数据只存储在叶子节点上,并且通过链表的方式将所。原创 2024-01-22 09:54:25 · 535 阅读 · 0 评论 -
一线大厂面试真题——谈谈你对MySQL事务隔离级别的理解
在SQL操作中,多个事务竞争可能会产生三种不同的现象,分别是脏读、幻读、不可重复读。别里面,只有串行化解决了全部的问题,但这种隔离级别的性能是最低的。读未提交,在这种隔离级别下,可能会产生脏读、不可重复读、幻读。这种隔离级别下,多个并行事务串行化执行,不会产生安全性问题。实际应用中,有些业务场景是不能接受这些现象存在的,所以在。),在这种隔离级别下,可能会产生不可重复读和幻读。被修改,看起来像是产生了幻觉,这种现象称为幻读。2事务未提交的数据,但是未提交的事务。),在这种隔离级别下,可能会产生幻读。原创 2024-01-20 09:43:42 · 482 阅读 · 0 评论 -
一线大厂面试真题——为什么MySQL索引结构采用B+树
B树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度会相比二叉树来说,会矮很多。一般来说,数据库的存储引擎都是采用B树或者B+树来实现索引的存储。总体来说,技术方案的选型,更多的要根据具体的业务场景来决定,并不一定是说。+树的非叶子节点不存储数据,所以树的每一层就能够存储更多的索引数。+树的这样一种数据结构,如果采用自增的整型数据作为主键,还能更好。免增加数据的时候,带来叶子节点分裂导致的大量运算的问题。+树的所有数据都存储在叶子节点,非叶子节点只存储。+树的叶子节点存储所有数据,所以。原创 2024-01-19 09:29:59 · 437 阅读 · 0 评论 -
一线大厂面试真题——什么情况下不建索引
频繁变更的表,比如经常需要更新、删除或插入记录,那么对这个表建立索引的开。在函数操作的情况,如果查询条件包含函数操作,那这个时候可能不会走索引,2. 数据离散度不高的列,比如性别、年龄这种,创建索引反而。它的特点是,非叶子节点只存储索引,叶子节点存储数据,从而减少。通常情况下,加索引是能直接提升数据的检索效率,1. 数据量太小的情况下,即使没有索引。,查询的速度也比较快,这个时候建立索引反。里面InnoDB引擎的B+树索引。所以大家首先的知道索引的原理,大家。不建立索引的原因和影响,并根据具。原创 2024-01-19 09:27:47 · 471 阅读 · 0 评论 -
一线大厂面试真题——为什么SQL语句不要过多的join
面试官主要想了解面试者对于SQL优化的理解以及在实际工作中如何处理SQL语句的性能问题。,只需要了解join操作会带来哪些影响,而这些影响对程序产生什。操作都需要对两个或多个表进行连接操作,这个操作需要消。语句变得复杂,难以理解和维护,特别是当。的复杂度会呈现指数级增长,给代。码的可读性和可维护性带来挑战。耗大量的计算资源和时间,如果。操作涉及到多个表的时候,而影响整个系统的性能。原创 2024-01-18 09:40:37 · 508 阅读 · 0 评论 -
一线大厂面试真题——MySQL update是锁行还是锁表
1、如果update语句中的where条件包含了索引列,并且只更新一条数据,那这个时候就加行锁。的Update操作既可以锁行,也可以锁表,具体使用哪种锁类型,取决于执行的Update语句的条件、事务隔离级别等因素。在多个事物并行对同一个数据进行修改的时候,会产生事物的竞争造成脏读、幻读、不可重复读等问题。为了避免这类问题的出现,引入了事物隔离级别,其实本质上来说,最终。就是考察候选人对锁范围的理解,下面来看下这个问题的回答思路。,也根据不同的作用范围,提供了不同的锁的实现方式。2、另外,根据查询范围不同,原创 2024-01-18 09:39:56 · 443 阅读 · 0 评论 -
一线大厂面试真题——MVCC过程中会加锁吗
在写操作的时候,MVCC会使用一种叫为“写时复制”(Copy-On-Write)的技术,也就是在修改数据之前先将数据复制一份,从而创建一个新的快照。另外,这个事物在新快照之上修改的结果,不会影响原始数据,其他事务可以继续读取原始数据的快照,从而解决了脏读、不可重复度问题。是否与该事务的快照版本一致,如果一致则表示可以修改这条数据,否则该事务需要等待其他事务完成对该数据的修改。所以,正是有了MVCC机制,让多个事务对同一条数据进行读写时,不需要加锁也不会出现读写冲突。,通常不需要加锁来控制并发访问。原创 2024-01-17 09:25:06 · 500 阅读 · 0 评论 -
一线大厂面试真题——MySQL索引在什么情况下会失效
4. LIKE查询的查询字符串以通配符开头。当使用LIKE查询并且查询字符串以通配符(例如%或_)开头时,当查询条件涉及到大量数据时,例如返回表中大部分数。如果索引列是数字类型,但是你传入的值是字符串,那这。当查询中包含OR条件时,如果O。. 没有使用索引列作为WHERE子句的查询条件。对索引列进行函数操作。无法使用索引,因为通配符在开头时无法进行前缀匹配。可能会认为使用索引并不高效,因此会放弃使用索引。无法使用索引,此时索引失效。件与索引列的数据类型匹配。在使用索引时必须将查询条。原创 2024-01-17 09:24:20 · 496 阅读 · 0 评论 -
一线大厂面试真题——存储MD5的值应该用VARCHAR还是CHAR
第三个,存储空间不同,char不管实际数据大小,存储空间是固定的,而varchar存储空间等于实际数据长度,所以varchar实际存储空间的使用要比char更小。第二个,存储的效率不同,char 类型每次修改以后存储空间的长度不变,所以效率更高varchar 每次修改数据都需要更新存储空间长度 ,效率较低。明一个char(10)的长度,如果存储字符串“abc”,虽然实际字符长度只有3,而MD5是一个固定长度的字符,不管数据怎么修改,长度不变,这个点很符合ch。char适合存储比较短的且是固定长度的字符串。原创 2024-01-16 09:26:34 · 428 阅读 · 0 评论 -
大厂面试真题——请简要说明MySQL中MyISAM和InnoDB引擎的区别
第一个,数据存储的方式不同,MyISAM中的数据和索引是分开存储的,而InnoDB是把索引和数据存储在同一个文件里面。第三个,对于锁的支持不同,MyISAM只支持表锁,而InnoDB可以根据不同的情况,支持行锁,表锁,间隙锁,临键锁。第二个,对于事务的支持不同,MyISAM不支持事务,而InnoDB支持ACID特性的事务处理。在InnoDB存储引擎中,数据同样存储在磁盘上,它在磁盘上只有一个ibd文件,里面包含索引和数据。为索引和数据是分离的,所以在进行查找的时候,先从索引文件中找到数据的磁盘位。原创 2024-01-16 09:25:05 · 551 阅读 · 0 评论 -
一线大厂面试真题——MySQL如何解决幻读问题
所以针对这种情况,可以使用LBCC也就是基于锁的机制来解决,也就是常说的行锁、表锁、间隙锁等。MVCC就是一种乐观锁的机制,它通过对不同事务生成不同的快照版本,通过UNDO。而如果作为一个刚工作没多久的程序员,必须要知道数据库的事务隔离级别的问题。事务不能看到当前事务第一次查询之后创建的事务,以及未提交的事务修改。,如果在一个事务里面存在当前读的情况下,MVCC还是会存在幻读问题,但是在当前读的情况下,是直接读取内存的数据,跳过。事务之间的数据隔离,解决了幻读的问题。为当前读不是读快照,而是直接读内存。原创 2024-01-15 09:27:43 · 460 阅读 · 0 评论 -
一线大厂面试真题——索引什么时候失效
5. 使用like通配符匹配后缀%xxx的时候,由于这种方式不符合索引的最左匹配原则,所以也不会走索引。但是反过来,如果通配符匹配的是前缀xxx%,符合最左匹配,也会走索引。在组合索引中,索引的存储结构是按照索引列的顺序来存储的,因此在sql中也需要按照这个顺序才能进行逐一匹配。理论上来说,使用索引列查询,就能很好的提升查询效率,但是不规范的使用会导致索引失效,从而无法发挥索引本身的价值。2. 在一个由多列构成的组合索引中,需要按照最左匹配法则,也就是从索引的最左列开始顺序检索,否则不会走索引。原创 2024-01-15 09:25:30 · 418 阅读 · 0 评论 -
一线大厂面试真题-说一下你对行锁、临键锁、间隙锁的理解
一个工作了6年的,最近去阿里面试p6这个岗位。面试之前信心满满的说,这次一定要拿下35k月薪的offer。然后,在第一面的时候,被MySQL里面的一个问题难住了。问题解答行锁、临键锁、间隙锁,都是MySQL里面InnoDB引擎下解决事务隔离性的一系列排他锁。分别介绍一下这三种锁1、行锁,也称为记录锁。(如图)当我们针对主键或者唯一索引加锁的时候,MySQL默认会对查询的这一行数据加行锁,避免其他事务对这一行数据进行修改。2、间隙。原创 2024-01-14 10:54:22 · 524 阅读 · 0 评论 -
一线大厂面试真题-MySQL事务的实现原理
因此,事务的实现原理的核心本质就是如何满足ACID的,在InnoDB里面用到了MVCC、行锁表锁、UNDO_LOG、REDO_LOG等机制来保证。这些思想还挺重要的,比如在分布式事务框架Seata的AT模式的数据回滚,就借鉴了InnoDB里面UNDO_LOG的设计思想。接着,I表示事物的隔离性,也就是多个并行事务对同一个数据进行操作的时候,如何避免多个事务的干扰导致数据混乱的问题。先,A表示Atomic原子性,也就是需要保证多个DML操作是原子的,要么都成功,原创 2024-01-14 10:44:02 · 445 阅读 · 0 评论 -
一线大厂面试真题-请说一下MySQL索引的优点和缺点?
3. 通过唯一索引约束,可以保证数据表中每一行数据的唯一性当然,索引的不合理使用,也会有带来很多的缺点。通过B+树的结构来存储数据,可以大大减少数据检索时的磁盘IO次数,从而提升。中的InnoDB引擎中,采用了B+树的结构来实现索引和数据的存储。到索引的维护,当数据量较大的情况下,索引的维护会带来较大的性能开。的时候,需要考虑到索引字段值的分散性,如果字段的重复数据过多,创。进行范围查找的时候,只需要找到起始节点,然后基于叶子节点的链。带来的问题就是,人才筛选难度增加,找工作越来越难。原创 2024-01-14 10:41:42 · 367 阅读 · 0 评论 -
一线大厂面试真题-数据库连接池有什么用?它有哪些关键参数?
一个工作5年的,他说参加美团面试,遇到一个基础题没回答上来。这个问题是:“数据库连接池有什么用?以及它有哪些关键参数”?问题解答从这几个方面来回答首先,数据库连接池是一种池化技术,池化技术的核心思想是实现资源的复用,避免资源重复创建销毁的开销。而在数据库的应用场景里面,应用程序每次向数据库发起CRUD操作的时候,都需要创建连接在数据库访问量较大的情况下,频繁的创建连接会带来较大的性能开销。(如图)而连接池的核心思想,就是应用程序在启动的时候提前初始化一部分连接保存到连接。原创 2024-01-13 14:03:11 · 456 阅读 · 0 评论 -
一线大厂面试真题-MySQL为什么使用B+Tree作为索引结构
在数据检索方面,由于所有的数据都存储在叶子节点,所以B+树的IO次数会更加。B+树就是最好的选择,就像MongoDB里面采用B树结构,本质上来说,其实是。B+树非叶子节点不存储数据,所以每一层能够存储的索引数量会增加,意味着B+图)因为B树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度。先,常规的数据库存储引擎,一般都是采用B树或者B+树来实现索引的存储。B+树的所有数据都存储在叶子节点,非叶子节点只存储索引。所有的数据必然都是存储在磁盘上的,而磁盘IO的效率实际上是。原创 2024-01-13 14:01:23 · 508 阅读 · 0 评论 -
一线大厂面试真题-索引有哪些缺点以及具体有哪些索引类型
3、对创建了索引的表进行数据的增加、修改、删除时,会同步动态维护索引,这个部分会造成性能的影响。1、合理的增加索引 ,可以提高数据查询的效率 ,减少查询时间。2、有一些特殊的索引 ,可以保证数据的完整性 ,比如唯一索引。3、普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值。索引:是目前搜索引擎使用的一种关键技术,对文本的内容进行分词、搜索。6、组合索引:多列值组成一个索引,用于组合搜索,效率大于索引合并。数据列不允许重复,不允许为NULL,一个表只能有一个主键。2、唯一索引:数据列不允许重复。原创 2024-01-12 09:27:07 · 414 阅读 · 0 评论 -
一线大厂面试真题-MySQL的binlog有几种格式?分别有什么区别
记录的是SQL的原文。好处是,不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动(比如alter table),因此这种模式的文件保存的信息太多,日志量太大。一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使用row。象更好的应对面试,可以自己搭建。原创 2024-01-12 09:24:53 · 413 阅读 · 0 评论 -
一线大厂面试真题-MySQL数据库CPU飙升的话,要怎么处理呢
中通过show processlist查看当前的会话情况,确定是否有消耗资源的SQL正在运行。1、如果确定是SQL问题,可以通过SQL的优化手段进行调整。3、找到消耗过高的SQL,通过执行计划进行具体的分析。2、重新执行SQL分析确认是否有达到优化的目的。如果有大量的请求连接进来,那我们就需要分析这个时。飙升问题需要综合考虑多个方面,包括查询优化、索。本身的参数并不是最优状态,那我们可以对。间段业务的情况,再做出相应的调整。调整,比如缓存大小、线程池大小等。析CPU飙高的这个时间段,的问题导致,那就需要。原创 2024-01-11 20:59:09 · 544 阅读 · 0 评论 -
一线大厂面试真题-MySQL主从集群同步延迟问题怎么解决
3、可以在从库上执行show slave status命令,获取seconds_behind_master字段的延迟时间,然后通过sleep阻塞等待固定时间后再次查询。log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db。实际上,主从复制的场景无法避免同步延迟的问题,如果一定要用强一致方案,那就应该考虑其他能够实现一致性场景的技术方案。2、如果对数据一致性要求高,在从库存在延迟的情况下,可以强制走主库查。会导致主从数据同步延迟的情况。原创 2024-01-11 09:32:47 · 454 阅读 · 0 评论 -
一线大厂面试真题-请你简单说一下MySQL的事务隔离级别
什么情况,写了5年的CRUD,还搞不清楚MySQL的事务隔离级别,难怪第一面就被刷下来。一个5年经验的,在一个公司干了5年,觉得自己特厉害,什么都能搞定,结果每次一到技术面就被刷。事务隔离级别,是为了解决多个并行事务竞争导致的数据安全问题的一种规范。问题解答具体来说,多个事务竞争可能会产生三种不同的现象1、 (如图)假设有两个事务T1/T2同时在执行,T1事务有可能会读取到T2事务未提交的数据,但是未提交。原创 2024-01-11 09:30:35 · 445 阅读 · 0 评论 -
一线大厂面试真题-说一下你日常工作中是怎么优化SQL的
1. 加索引,增加索引是一种简单高效的手段,但是需要选择合适的列,同时避免导致。分库分表,在单表数据量较大或者并发连接数过高的情况下,通过这种方式可以有。分离,针对读多写少的场景,这样可以保证写操作的数据库承受更小的压力,2. 避免返回不必要的数据列,减少返回的数据列可以增加查询的效。优化SQL的结构,比如是否走全表扫描、避免子查询等。基本上回答到这个程度得到面试官的认可是没问题,不。过要注意,面试官还会基于你回答的。操作,比如like、函数等。缓解独占锁和共享锁的竞争。原创 2024-01-10 21:58:54 · 490 阅读 · 0 评论 -
一线大厂面试真题-binlog和redolog有什么区别
3. 记录的时机不同,binlog是在执行SQL语句的时候,在主线程中生成逻辑变化写入到磁盘中,所以它是语句级别的记录方式;后台线程中生成并写入到磁盘中的,所以它是事务级别的记录方式,一个事务操作完成以后才会被写入到redolog中。,可以通过RedoLog来恢复未完成的数据,保证数据的完整性。一般考察1~3年的程序员,所以对于这个工作年限的要注意了解它们的原理。主从数据同步的场景中,master节点的数据变更,会写入。redolog记录的是物理变化,也就是数据页的变化结果。原创 2024-01-10 21:41:31 · 765 阅读 · 0 评论 -
一线大厂面试真题-什么是聚集索引和非聚集索引
(如图)由于在InnoDB里面,主键索引表示的是一种数据存储结构,所以如果是。的一种索引结构,而聚集索引就是按照每张表的主键来构建一颗B+树,然后叶。基本上是这样,由点到面去展开,如果你对这个技术理解不够全面,很容易就。基于非聚集索引来查询一条完整的记录,最终还是需要访问主键索引来检索。么意味着这个表里面的数据存在多个副本,造成磁盘空间的浪费,以及数。集索引就是基于主键创建的索引,除了主键索引以外的其他索引,称。里面只能存在一个聚集索引,原因很简单,如果存在多个。这样的特性,聚集索引并不仅仅是一种索。原创 2024-01-10 21:00:05 · 455 阅读 · 0 评论 -
一线大厂面试真题-为什么索引要用B+树来实现呢,而不是B树
在数据检索方面,由于所有的数据都存储在叶子节点,所以B+树的IO次数会更加。B+树就是最好的选择,就像MongoDB里面采用B树结构,本质上来说,其实是。图)因为B树是一种多路平衡树,用这种存储结构来存储大量数据,它的整个高度。先,常规的数据库存储引擎,一般都是采用B树或者B+树来实现索引的存储。树非叶子节点不存储数据,所以每一层能够存储的索引数量会增加,意味着B+够决定磁盘IO的次数,磁盘IO次数越少,对于性能的提升就越大,这。所有的数据必然都是存储在磁盘上的,而磁盘IO的效率实际上是。原创 2024-01-09 21:14:50 · 431 阅读 · 0 评论 -
一线大厂面试真题-MySQL中的RR隔离级别,到底有没有解决幻读问题
导致幻读的根本原因是,触发的当前读操作,绕过了快照读,从而导致MVCC机制在当前场景下失效。这样一种情况{如图},在事务1里面通过update语句触发当前读的情况下,就。会导致在该事务中的前后两次查询的数据行数不一致,从而出现幻读的现。所谓的幻读,表示在同一个事务中的两次相同条件的查询得到的。中的RR事务隔离级别,在特定的情况下会出现幻读的问题。RR级别下,具体什么情况下会出现幻读呢?最终读取到了事务2中已经提交的数据。为了避免出现这类的情况,我们可以通过。部分人说有,一部分人说没有。原创 2024-01-09 21:12:57 · 504 阅读 · 0 评论 -
一线大厂面试真题-为什么一线互联网公司严禁使用存储过程
存储过程的优化和维护很麻烦,随着业务的发展,数据库的表结构也许会发生变化,这些变化需要同步给到存储过程,并且有可能原来的SQL语句的执行计划不是最优的,也需要重新维护。2.存储过程的一致性很差,如果从Oracle迁移到MySQL,涉及到部分数据库独有特性的时候,整个存储过程就需要重写,不仅成本高,而且还有可能对上游业务造成影响。3.存储过程的管理比较困难,一旦存储过程的量比较大的时候,就会陷入到一个混乱的状态。在互联网公司,业务的迭代速度是日新月异的,把业。务逻辑沉淀在应用程序中,反而更加。原创 2024-01-09 21:11:21 · 800 阅读 · 0 评论 -
一线大厂面试真题-关于索引的底层实现,为什么选择B+Tree而不是红黑树
红黑树等平衡树也可以用来实现索引,但是文件系统及数据库系统,普遍采用B+Tree作为索引结构这是因为使用B+tree访问磁盘数据有更高的性能。问题解答第一点对于一个数据库来说存储的数据量会比较多,导致索引也很大因此需要将索引存储在磁盘,但是磁盘的IO操作又非常耗,所以提高索引效率的关键在于减少磁盘IO的次数。举个例子:对于31个节点的树来说,一个5阶BTree的高度是3一个红黑树的最小高度是5,树的高度基本决定了磁盘的IO次数,所以使用B +Tree性能要高很多。原创 2024-01-08 21:48:42 · 361 阅读 · 0 评论 -
一线大厂面试真题-关于MVCC的理解
第三个是:解决了一致性读的问题也就是事务启动时根据某个条件读取到的数据,直到事务结束时,再次执行相同条件,还是读到同一份数据,不会发生变化。用来解决读写冲突,乐观锁或者悲观锁解决写写冲突从而最大。隐式字段,undo日志,Read View来实现的。同时在进行读操作,这种情况下不会出现任何并发问题。:MVCC采用了乐观锁的方式实现,降低了死锁的概率。可以解决读写并发阻塞问题从而提升数据并发处理能力。就是为了解决事务操作中并发安全性问题的无锁并发。现脏读,幻读,不可重复读的问题。,也就是多版本并发控制。原创 2024-01-08 20:03:59 · 441 阅读 · 0 评论 -
一线大厂面试真题-你是否在面试中也被问过MySQL优化相关的问题呢?
MySQL作为一种免费开源的关系型数据库,深受着互联网公司的喜爱。因此,它也成为了技术面试官最常问的问题之一。相信很多小伙伴,也曾被MySQL相关的一些面试题弄的手足无措。我们就通过普通人与高手的形式,带大家深入了解MySQL的性能优化技巧。问题解答MySQL的性能优化可以分为4大部分1、硬件和操作系统层面的优化2、架构设计层面的优化3、MySQL程序配置优化4、SQL优化硬件及操作系统层面优化从硬件层面来说,影响MySQL。原创 2024-01-08 20:01:40 · 965 阅读 · 0 评论 -
一线大厂面试真题-b树和b+树的理解
数据结构与算法问题,困扰了无数的小伙伴。很多小伙伴对数据结构与算法的认知有一个误区,认为工作中没有用到,为什么面试要问,问了能解决实际问题?图灵奖获得者:Niklaus Wirth说过:程序=数据结构+算法,也就说我们无时无刻都在和数据结构打交道。只是作为Java开发,由于技术体系的成熟度较高,使得大部分人认为:程序应该等于框架+SQL呀?问题解答为了更清晰的解答这个问题,从三个方面来回答:1、了解二叉树、AVL树、B树的概念2、B树和B+树的应用场景。原创 2024-01-07 21:45:04 · 935 阅读 · 0 评论 -
一线大厂面试真题-innoDB如何解决幻读
虽然InnoDB中通过间隙锁的方式解决了幻读问题,但是加锁之后一定会影响到并发性能,因此,如果对性能要求较高的业务场景中,可以把隔离级别设置成RC,这个级别中不存在间隙锁。注意,这里强调的是范围查询,也就是说,InnoDB引擎要解决幻读问题,必须要保证一个点,就是如果一个事务通过这样一条语句(如图)进行锁定时。当对查询范围id>4 and id4这样一种范围查询加锁时,会加next-key Lock,锁定的区间范围是:(4,7。原创 2024-01-07 12:52:09 · 808 阅读 · 0 评论