MySQL(上)

1. InnoDB存储结构

  • InnoDB一个页的大小
  • InnoDB行格式(四种)

COMPACT

变长字段占用字节数排序及原因

NULL值列表:逆序二进制位对应

真实数据添加主要列:row_id、trx_id、roll_pointer

CHAR(M)类型存储:编码实际存储长度,变长列表记录

REDUNDANT(非紧凑)

变长列表替换为字段长度偏移列表(每个字段)

NULL值会在偏移量中使用一个位标识

DYNAMIC

COMPRESSED

2. InnoDB数据页结构

  • 页大小、页类型、存储数据的页
  • 页主要参数

每条数据主要参数

next_record

按照主键大小的下一条记录

在记录的位置,对应变长列表的顺序

删除的数据之间可以形成垃圾链表

Infimum、SupreMum

User Records

Infimum槽只有一个元素、SupreMum槽1~8个,中间槽4~8

槽裂:满8,裂成前4后5

日志序列号LSN(redo log)

页面内单向链表

  • 页面间:双向链表

3. B+树索引结构

  • InnoDB

二级索引

只存索引列+主键+页号

回表:二级索引中根据主键信息到聚簇索引中重新定位完整数据的过程

联合索引排序:第一列绝对顺序,后续是在上一列下相对有序

二级索引相当于该索引与主键构成的联合索引

唯一二级索引也会包含主键值

区别目录页和数据页,段、record_type字段:0数据、1目录

页内定位数据:槽可加速,链表遍历

页的PAGE_LEVEL字段是页节点在B+树中的层级,0是叶子

页面都有一个页面编号,如果连续,代表物理磁盘连续

一个B+树索引根节点创建后页号不变

规定一个页至少存放2条记录

聚簇索引即数据

非叶子节点

也会存在双向链表

  • MyISAM

单独存放在数据文件,没有数据页

索引信息单独存放到另一个文件

索引存储(二级索引)、主键、行号组合

MyISAM的索引全是二级索引

MyISAM回表速度快,因为直接存储数据的地址偏移量

4. B+树索引使用

  • 查询匹配过程
  • 索引的代价

空间代价

一个索引需要维护一个B+树

时间代价

页面分裂、页面回收、节点维护

  • 索引条件下推
  • 索引排序

如果在order by子句中使用了索引列,可省去磁盘或内存排序步骤

正常情况下在service层(内存)或者磁盘上排序

联合索引:order by 后的顺序必须按照联合索引顺序

不能使用索引排序情况:

联合索引字段间ACS、DESC混用

order by 中包含不同索引的列

orderby联合索引不符合最左匹配

排序列不是独立的列名出现在order by中

  • 索引用于分组
  • 回表代价
  • 如何更好创建索引

只为用于where、order by、和group by的字段建立索引

考虑索引列中不重复值的比例

索引列的类型尽量小

建立前缀索引

覆盖索引(避免使用select *)

索索条件中以单独列名出现

5. InnoDB的表空间

  • 群里面的一张图

6. 单表访问方法

  • 查询优化器的工作
  • 访问方法的概念

const

ref

ref_or_null

range

index

all

  • 索引和并

Intersection:交集

Union:并集

Sort-Union合并

7

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

后端开发面试高频八股+算法 文章被收录于专栏

涵盖各大厂考官最爱问知识点,22年最新整理!

全部评论

相关推荐

嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务