当前位置: 首页 > news >正文

MySQL面试题

文章目录

  • MySQL索引
    • Mysql索引分类
    • InnDB索引与MyISAM索引实现有什么区别
    • 一个表中如果没有创建索引,那么还会创建B+树么?
  • B+树原理
    • B+树怎么来的
    • B+树 叶子节点和非叶子节点
    • B+树能存储多少数据?

MySQL索引

Mysql索引分类

mysql 索引分为三类:B+树、hash索引、全文索引

InnDB索引与MyISAM索引实现有什么区别

相同点

  • 他俩都是B+树为基础的

不同点

  • 索引文件不同
    • InnDB索引和数据是同文件
    • MyISAM索引文件时索引文件、数据文件是数据文件
  • 叶子节点存储数据不同
    • InnDB聚簇索引子节点存放的是记录本身、非聚簇索引存放的是索引字段和主键
    • MyISAM聚簇索引和非聚簇索引存放的是内存地址

一个表中如果没有创建索引,那么还会创建B+树么?

会创建!分为两种种情况

  1. 没有创建索引,但有主键。

    • 这种情况会创建主键索引也就是聚簇索引(非主键索引是非聚簇索引)
  2. 没有创建索引,也没有主键。

    • Mysql会创建一个row_id,只能mysql内部使用,外部无法使用其进行查询。

B+树原理

B+树怎么来的

  1. 首先是二叉树,左边节点,一定比上层节点小,右边节点一定比上层节点大。但会有一边枝繁叶茂,另一边层数低的情况。
  2. 平衡二叉树解决了这一问题,尽量的解决了两边不平衡的问题。但又发现树越高查询的判断的次数就越多。
  3. 结合数据库就出现了B树,他的非叶子节点也记录了真实数据,但每一页只有16k大小,这就导致如果真实数据过多,会导致每页的记录变少,树又会高起来
  4. B+树在此基础上,将真实数据全部存储到了叶子节点,非叶子节点不记录数据。这就是聚簇索引。非聚簇索引叶子节点记录的是主键。这就又导致了可能又回表操作。

B+树 叶子节点和非叶子节点

树最底层的就是 叶子节点,而上层的就是 非叶字节点

页中大致有以下几个部分

  • record_type: 表示记录类型 0 普通记录 2 最小记录 3 最大记录 1 非叶子节点记录
  • next_record: 表示吓一条记录的相对位置。(单向链表)
  • 叶子节点中会记录的真实数据。
  • 非叶子节点中会记录子节点页中的最小值主键值和页数。

B+树能存储多少数据?

三层聚簇索引来举例

根节点 只存 主键 + 页数 + 其他信息 约等于 10字节,一页是16k 也就是说存储了1600条

那么也就是说第二层有 1600 页,每一页也同样是存储了16000条

也就是说叶子节点有 1600 * 1600 页

叶子节点要存储真实数据,就按照1k来计算,一页 16 条记录 那就是 16 * 1600 * 1600 条记录 大约四千万条。

http://www.lryc.cn/news/20058.html

相关文章:

  • 【蓝桥OJ—C语言】高斯日记、马虎的算式、第39级台阶
  • 基于深度学习的三维重建网络PatchMatchNet(二):dtu数据集介绍及PatchMatchNet中加载数据部分代码解析
  • 一文3000字从0到1实现基于requests框架接口自动化测试项目实战(建议收藏)
  • 【RockerMQ】001-RockerMQ 概述
  • 阿里是如何做Code Review的?
  • 内核调试:一次多线程调试与KASAN检测实例
  • Java - 数据结构,队列
  • ccc-pytorch-感知机算法(3)
  • LeetCode 225.用队列实现栈
  • 【面试】spring控制反转IOC
  • Spring 事务管理详解及使用
  • LeetCode 232.用栈实现队列
  • go面向对象思想封装继承多态
  • 【网络原理9】HTTP响应篇
  • SpringCloud之Seata(二)
  • 【Redis-入门阶段】基本数据结构
  • BACnet协议详解————MS/TP物理层,数据链路层和网络层
  • Tomcat
  • 创客匠人直播:构建公域到私域的用户增长模型
  • 机试指南
  • Android CTA认证设定首选网络类型
  • Android 动态切换应用图标方案
  • SMART PLC斜坡函数功能块(梯形图代码)
  • 不那么认真的linux复习
  • Redis系列文章总纲
  • 更新丨三大模块升级,助力高效交付商业项目!
  • C++回顾(二)——const和引用
  • MXNet中使用双向循环神经网络BiRNN对文本进行情感分类<改进版>
  • DNS 域名解析
  • Spring MVC 源码- ViewResolver 组件