暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
InnoDB的逻辑存储结构简介.pdf
119
5页
3次
2024-05-07
免费下载
InnoDB 的逻辑存储结构简介
索引组织表
InnoDB
逻辑存储结构
表空间
表就是关于特定实体的数据集合,是关系型数据库的核
索引组织表
InnoDB
存储引擎中,表中的数据都是根据主键顺序组织存放的,这种存储方式的表称为
索引组织表
所以在
InnoDB
存储的擎表中,都必须有个主键
primary key
),如在创建表时没有
示地定义主键,则
InnoDB
存储引擎会按照下面的方式选择或者创建主键
首先判断表中是否有非空的唯一索引,
unique key not null
如果有,那么该列就会变为主
(rowid)
如果有多个非空的唯一索引则会选择建表时第一个定义的非空唯一索引作为主键
rowid
如果不符合上述条件,
InnoDB
存储引擎将自动创建一个
6
字节大小的指针(
rowid
举个栗子
CREATE TABLE z(
a INT NOT NULL,
b INT NULL,
c INT NOT NULL,
d INT NOT NULL,
UNIQUE KEY(b),
UNIQUE KEY(c),
UNIQUE KEY(d)
)ENGINE=INNODB,CHARSET=utf8;
从建表上看,可以看到
b
c
d
列都有唯一索引,
b
可以为
NUll
故不可以充当主键
第一个非空唯一索引是
c
列,所以
c
将会充当主键
//
插入几条数据
INSERT INTO z SELECT 1,2,3,4;
INSERT INTO z SELECT 1,3,4,5;
INSERT INTO z SELECT 1,4,5,6;
INSERT INTO z SELECT 1,5,6,7;
//
查询情况,
_rowid
可以判断主键是哪一列
SELECT a,b,c,d,_rowid FROM z;
结果如下所示
可以看到
**_rowid**
c
列一模一样,所以可以确定
c
列成为了主键
但是
**_rowid**
只可以看单个列作为主键的情况,如果使用多个列作为主键是查询不了的
//
当遇到下面的建表语句是无法使用
rowid
查询的
CREATE TABLE z2(
a INT NOT NULL,
b INT NOT NULL,
c INT NOT NULL,
PRIMARY KEY(a,b)
)ENGINE=INNODB,CHARSET=utf8;
InnoDB
逻辑存储结构
InnoDB
存储的逻辑存储结构看,所有数据都被逻辑地存放在一个空间里面,称之为表空
间(
tablespace
)。而表空间又由段
segment
)、区
extent
)、页
page
)组成,页有时
也会被成为块
其实是段里面的是区,区里面的是页,页里面还有行
表空间
前面的
InnoDB
存储文件提到过,所有的数据都是存放在表空间里面的,默认会有一个表空
ibdata1
of 5
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。