计算机基础面经28

计算机基础面经28
@author 壮
1、都知道数据库索引采用B+树而不是B树,原因也有很多,主要原因是什么?【11】
主要原因:
B+树只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频繁的,而B树只能中序遍历所有节点,效率太低
2、文件索引和数据库索引为什么使用B+树【12】
(1)方便扫库
B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支持range-query非常方便,而B树不支持,这是数据库选用B+树的最主要原因。
(2)B+tree的磁盘读写代价更低
B+tree的内部结点并没有指向关键字具体信息的指针(红色部分),因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一块盘中,那么盘块所能容纳的关键字数ᰁ也越多。一次性读入内存中的需要查找的关
键字也就越多,相对来说IO读写次数也就降低了;
(3)B+tree的查询效率更加稳定
由于内部结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引,所以,任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当
3、听说过视图吗?那游标呢?【13】
视图(子查询)是一种虚拟的表,通常是有一个表或者多个表的行或列的子集,具有和物理表相同的功能;
两类:单表视图一般用于查询和修改,会改变基本表的数据;多表视图一般用于查询,不会改变基本表的数据;
把经常使用的数据定义为视图【设计聚合函数相关操作】
(2)安全性
用户只能查询和修改能看到的数据
(3)逻辑上的独立性
屏蔽了真实表的结构带来的影响【动态的数据的集合,数据是随着基表的更新而更新】
游标是对查询出来的结果集作为一个单元来有效的处理。游标是处理结果集的一种机制,定位到结果集中的某一行,多数据进行读写;
作用如下:
- 定位到结果集中的某一行
- 对当前位置的数据进行读写
- 可以对结果集中的数据单独操作,而不是整行执行相同的操作
- 是面向集合的数据库管理系统和面向行的程序设计之间的桥梁
4、MySQL中为什么要有事务回滚机制?【14】
恢复机制是通过回滚日志(undo log)实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后在对数据库中的对应行进行写入。当事务已经被提交之后,就无法再次回滚了。
回滚日志作用:
- 能够在发生错误或者用户执行 ROLLBACK 时提供回滚相关的信息
- 在整个系统发生崩溃、数据库进程直接被杀死后,当用户再次启动数据库进程时,还能够立刻通过查询回滚日
志将之前未完成的事务进行回滚,这也就需要回滚日志必须先于数据持久化到磁盘上,是我们需要先写日志后写数据库的主要原因。
5、数据库引擎InnoDB与MyISAM的区别【15】
事务: InnoDB 是事务型的,可以使用 Commit 和 Rollback 语句。
索引:InnoDB 聚簇索引关键字中存放的是数据,而MyISAM聚簇索引中存放的是数据对应的地址。
并发: MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。
外键: InnoDB 支持外键。
备份: InnoDB 支持在线热备份。
崩溃恢复: MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。
其它特性: MyISAM 支持压缩表和空间数据索引。
全站分卷索引 · 152 卷
- 1代码随想录知识星球精华(最强八股文)第五版(面经篇)
- 2后端面经02-美团
- 3Java面经02-阿里ICBU
- 4Java面经-04-CVET
- 5Java面经-06-字节后端
- 6Java面经08-用友
- 7Java面经09-快手
- 83. 计算机网络
- 94. 数据库
- 105. 算法
- 11Java面经11-美团
- 121.3 java的4种引用
- 132. JVM
- 143. 操作系统
- 154. 计算机网络
- 165. 数据库
- 17Java面经13
- 18Java面经14
- 19Java面经16
- 20Java面经17
- 21Java面经18
- 22二面
- 23三面
- 24面经19-Java-字节暑期实习
- 25字节三面
- 26面经21-Java-蚂蚁暑期实习
- 27蚂蚁三面
- 28MySQL
- 29计算机网络
- 30拉链法的工作原理
- 31确定桶下标
- 32扩容 - 基本原理
- 33链表转红黑树
- 34子进程和线程的区别
- 35协程
- 36数据库
- 37哈希索引
- 38计算机网络
- 39TCP和UDP的区别
- 40面经25-Java-百度二面
- 41面经26-Java-京东一面
- 42面经27-Spring
- 43计算机基础面经28
- 44计算机基础面经29
- 45计算机网络
- 46操作系统
- 47任务调度算法
- 48数据库
- 49计算机基础面经31
- 50乐观锁两种实现机制
- 51版本号机制
- 52死锁相关问题
- 53计算机网络
- 54拥塞控制的四种方法
- 55计算机基础面经32
- 56三次握手的流程
- 57计算机基础面经33
- 58计算机基础面经34
- 59异步
- 60C++后端
- 61面经3-C++-地平线
- 62面经6-C++-国电南瑞
- 63面经7-c++后端-字节
- 64二面
- 65面经11-C++-OPPO
- 66面经12-C++-商汤
- 67SelectDB
- 68面经15-C++-中望
- 69面经16-C++-米哈游
- 70面经17-C++-旷世
- 71面经19-C++-蔚来
- 72面经20-C++-第四范式
- 73面经21-C++-TP-Link
- 74面经23-C++-猿辅导
- 75面经25-C++-文远知行
- 76面经26-C++-百度
- 77百度二面
- 78百度三面
- 79面经27-C++-ZEKU
- 80ZEKU哲库HR面
- 81面经28-C++-VIVO
- 82面经29-C++-TPLINK
- 83字节二面
- 84HR面
- 85面经32-C++
- 86TCP的粘包与拆包
- 87引入协程的原因
- 88面经34-C++
- 892. 指针与引用的区别
- 902. Nagle 算法与延迟确认
- 91数据库
- 922. MVCC-多版本并发控制
- 93计算机网络
- 94面经36
- 95面经37
- 96面经38
- 97面经39-C++-拼多多+字节
- 98字节一面【7.27】
- 99shopee测开一面【7.29】
- 100一、表面上开销
- 101面经44-京东二面
- 102Go后端
- 103二面
- 104面经3-Go-字节日常实习
- 105字节二面
- 106字节三面
- 107HR面
- 108面经5-Go-字节暑期实习
- 109字节二面
- 110字节三面
- 111面经02-测开-百度提前批
- 112二面
- 113面经06-测试-海尔智家
- 114面经07-测开-蔚来
- 115面经09-测试-中望
- 116面经10-测开-ZEKU
- 117面经12-测试-科大讯飞
- 118面经15-测开-美团暑期实习
- 119面经16-测开-外企社招
- 120Nvidia四面
- 121面经2-前端-百度日常实习
- 122面经3-前端-得物面经
- 123面经4-前端-腾讯健康
- 124面经5-前端-字节面经
- 125面经6-前端-携程前端
- 126面经7-前端-顺丰
- 127面经9-前端-比特大陆日常实习
- 128面经10-前端-抖音
- 129面经11-前端-蔚来/百度/oppo
- 130百度提前批
- 131面经12-前端-知乎暑期实习
- 132知乎二面
- 133百度二面
- 134面经2-Android客户端-大疆
- 135二面
- 136面经3-客户端-字节暑期实习
- 137字节二面
- 138字节二面(深入项目,1h)
- 139面经5-客户端-字节
- 140面经6-客户端-字节
- 141算法
- 142面经3-NLP-科大讯法
- 143面经4-NLP-科大讯法
- 144面经7-游戏算法-莉莉丝
- 145面经10-算法
- 146面经11-算法-百度pnc暑期实习
- 147百度二面
- 148抖音一面
- 149嵌入式
- 150面经3-嵌入式-芯动科技
- 151面经4-嵌入式-韶音科技
- 152面经6-嵌入式-新华三