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