MySQL相关面试题

MySQL相关面试题
1.谈谈MySQL启动流程和架构原理
2.myisam和innodb索引底层结构
3.为什么InnoDb引擎表必须有主键,并且推荐使用整型的自增方式?
4.mysql索引优化如何定位慢查询
5.EXPLAINType需要达到什么级别
6.MySQL 索引为什么使用B+树而不是B树
7.mysql索引如何避免回表查询
8.mysql索引为什么需要遵循遵循最佳左前缀法则
9.MySQL分表分库底层原理
10.谈谈MySQ分表分库如何查询
11.mysql什么原因会引发行锁、间隙锁、表锁
12.谈谈MySQL事务隔离级别
13.聊聊MySQLMVCC版本链底层原理
14.一不小心将数据库数据删除了如何恢复
15.undolog、redolog、binlog之间区别
16.mysql聚集索引和非聚集索引的区别

mysql中的索引是用什么数据结构
在线B+树模拟:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
Innodb 使用B+树数据结构
1.Hash表 等值查询效率比较高、但是不支持范围查询。
2.二叉树 时间复杂度log2n 缺点:有可能产生不平衡 类似于链表的结构 时间复杂度为o(n)。
3.平衡二叉树avl/红黑树 使用旋转和变色方式保证平衡 它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1。
缺点:如果存放几百条数据的情况下,树高度越高,查询效率会越慢
4.B-Tree树
B树中每个节点都存放着索引和数据,数据遍布整个树结构,搜索可能在非叶子节点结束,最好的情况是O(1)。一般一棵 B 树的高度在 3 层左右,3 层就可满足 百万级别的数据量,也就是B树 叶子与非叶子节点 都会存放data数据

5.B+树
1.非叶子节点不存储data,只存放索引(冗余)
2.叶子节点包含所有索引字段
3.叶子节点用指针连接,提高区间访问的性能

谈谈B树与B+树区别

B+树是B树的一种变种,它与 B树 的 区别 是:
1.B树叶子节点保存了完整的索引和数据,而B+树非叶子节点只保存索引值,因此它的查询时间固定为 log(n).
2.B+树在叶子节点中有指向下一个叶子节点的指针,叶子节点类似于一个单链表
正因为叶子节点保存了完整的数据以及有指针作为连接,B+树可以增加了区间访问性,提高了范围查询,而B树的范围查询相对较差
3.B+树更适合外部存储。因为它的非叶子节点不存储数据,只保存索引。
4.B+树内节点不存储数据,所有 data 存储在叶节点导致查询时间复杂度固定为 log n。而B-树查询时间复杂度不固定,与 key 在树中的位置有关,最好为O(1)。
myisam和innodb索引底层结构
1.Innodb 引擎存在事务 Myisam 引擎不存在事务
2.mysql 默认使用存储引擎Innodb
3.1.MyISAM 三个文件,对应如下:
role.frm:表结构文件
role.MYD:数据文件(MyISAM Data)
rol

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值