MySQL 页、页结构、页目录、索引

MySQL中,数据存到了什么地方?

存储到了硬盘的文件上,被称为:数据文件表空间
每个数据库都是由 一组数据文件 组成,这些文件包含了:所有表、索引、其他相关对象的数据

MySQL 以什么样的方式访问?

MySQL 通过 存储引擎 来访问数据文件

什么是存储引擎?

存储引擎是一种插件式架构,定义了数据如何被存储、管理、检索

  • Innodb:支持事务
  • MylSAM:不支持事务,但执行快速

插件式架构是什么?

插件式架构(Plugin Architecture)是一种软件设计模式,它允许在不改变主程序结构的情况下,扩展和定制软件功能

使用插件式架构,用户可以在软件中添加新的功能模块替换现有的模块,而无需修改主程序代码,从而提高了软件的灵活性、可维护性和可扩展性。

通常,插件式架构的基本思想是将软件划分成核心部分插件部分两个部分

核心部分:负责提供基本的框架和服务
插件部分:为核心部分提供额外的功能改善现有功能

插件部分通过接口和API与核心部分进行交互,从而实现了增强软件功能的目的

插件式架构广泛应用于各种软件系统中,例如:

  • Web浏览器:用户可以安装不同的插件,如Flash、Java、广告拦截等,以实现特定的功能和定制化
  • 文本编辑器:用户可以安装不同的插件,如自动补全、语法高亮显示、版本管理等,以提高开发效率
  • 图形图像处理软件:用户可以安装不同的插件,如滤镜、图层、调色等,以改善图像处理质量

插件式架构是一种强大的软件设计模式,可以使软件具有更高的灵活性、可扩展性和可维护性

页:从表中获取记录的基本单位

磁盘可实现数据的持久化
但是,真正处理数据的过程,发生在内存上,所以需要将磁盘上的数据加载到内存中
磁盘读写速度非常慢,若想从表中获取记录,但交互的单位是一条条记录,会导致读取速度非常慢

InnoDB 采取的方式:将数据划分为多个页,以页作为与磁盘交互的基本单位
页大小,默认 16 KB,即一次最少从磁盘读取 16 KB 内容

在这里插入图片描述

InnoDB 行格式

在这里插入图片描述

CREATE TABLE my_table (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,
	sex TINYINT(4) DEFAULT 0,
	phone VARCHAR(20),
	address VARCHAR(100),
  PRIMARY KEY (id)
);


INSERT INTO my_table 
( id, name, age, sex, phone, address )
VALUES ( 1, 'zhangsan', 18, 0, '131', '上海市' );

页结构

从数据文件中,返回的数据页,可以被划分成多个不同的部分,比如

  • User Records:用户记录
  • Free Space:空闲记录

当插入一条新记录时,会从 Free Space 申请一个记录大小的空间,划分到 User Records 中去

INSERT INTO page_demo 
VALUES(1, 100, 'aaaa'), (2, 200, 'bbbb'), (3, 300, 'cccc'), (4, 400, 'dddd');

在这里插入图片描述

  • heap_no:当前记录,在页中的,相对位置
  • record_type:当前记录的类型(0 普通记录、2 Infimum 记录、3 Supremum 记录)
  • next_record:当前记录的真实数据,到下一条记录的真实数据

比如 32 表示:从当前记录的真实数据地址开始,向后找 32 字节,便是下一条记录的真实数据
0 表示无下一条记录
负数表示:向前寻找

  • n_owned:“殿后的带头大哥”所记录的,所有组中的,所有记录的条数

比如

  • Infimumn_owned 为 1,表示:以 Infimum 记录为最后一个节点,这个分组只有 1 条记录(它自己)
  • Supremumn_owned 为 5,表示:以 Supremum 记录为最后一个节点,这个分组有 5 条记录(自己 + 插入的 4 条记录)

Infimum记录所在的分组,只能有 1 条记录
Supremum记录所在的分组,只能有 1 ~ 8 条记录
剩下的分组,条数范围:只能是 4 ~ 8 条记录

MySQL,会自动在每个页中,添加 2 条记录,可以被称为虚拟记录

  • 最小记录:Infimum
  • 最大记录:Supremum

在这里插入图片描述

页目录是什么?

一种数据结构,可以

  • 存储数据页位置信息
  • 管理碎片空间

通过页目录可以快速定位到某个数据页,并知道该页中哪些空间是可用的

一个组,对应一个槽,槽中存放每个组中,最大的那条记录,在页面中的地址偏移量

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值