数据库存储引擎 InnoDB

本文详细介绍了InnoDB存储引擎的页结构,包括页的大小、行格式、页目录等。讨论了B+树索引的原理,如聚簇索引、二级索引和联合索引,并对比了InnoDB与MYISAM的区别。此外,还探讨了创建和使用索引的最佳实践,以及何时适合或不适合建立索引。
摘要由CSDN通过智能技术生成

存储引擎

服务器支持不同的存储引擎,不同的表可以设置不同的存储引擎,真实数据在不同存储引擎中存放的格式一般是不同的,有的存储引擎将数据存放在磁盘中,有的存储引擎比如Memory,不用磁盘存储,服务器关闭后数据就消失了。

InnoDB

InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的

页(磁盘和内存的交互)

规定,一页至少存放2条记录,一页16KB=16384字节
在这里插入图片描述

行格式(4种)

表的记录在磁盘上的存放方式被称为行格式或者记录格式

ROW_FORMAT=行格式名称

InnoDB 行格式有:

1. Compact
在这里插入图片描述
变长字段长度列表,NULL值列表 逆序存放
NULL值列表必须用整数个字节的位表示,高位补零
记录头信息 用于描述记录,由固定的5个字节组成,也就是40个二进制位,不同的位代表不同的意思
真实数据列还包含一些隐藏列,由存储引擎自动生成

2. Redundant
mysql5.0之前用的在这里插入图片描述
会把该条记录中所有列(包括隐藏列)的长度信息都按照逆序存储到字段长度偏移列表
记录头信息占用6字节,48个二进制位

对于Compact和Redundant行格式来说,如果某一列中的数据非常多的话,在本记录的真实数据处只会存储该列的前768个字节的数据和一个指向其他页的地址,然后把剩下的数据存放到其他页中,这个过程也叫做行溢出,存储超出768字节的那些页面也被称为溢出页。

在这里插入图片描述

3. Dynamic
mysql5.7 默认使用
4. Compressed
Compressed行格式会采用压缩算法对页面进行压缩。

Dynamic和Compressed行格式类似于COMPACT行格式,只不过在处理行溢出数据时有点儿分歧&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值