InnoDB的逻辑存储结构(表、段、区、页、行)

目录

索引组织表

 InnoDB逻辑存储结构

表空间


表就是关于特定实体的数据集合,这是关系型数据库模型的核心。

索引组织表

在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table)。在 InnoDB 存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显式地定义主键,则 InnoDB 存储引擎会按如下方式选择或创建主键:

  • 首先判断表中是否有非空的唯一索引(Unique NOT NULL),如果有,则该列即为主键。
  • 如果不符合上述条件, InnoDB存储引擎自动创建一个6字节大小的指针。

当表中有多个非空唯一索引时,InnoDB 存储引擎将选择建表时第一个定义的非空唯一索引为主键。这里需要非常注意的是,主键的选择根据的是定义索引的顺序,而不是建表时列的顺序。看下面的例子:

CREATE TABLE z(
	a INT NOT NULL,
	b INT NULL,
	c INT NOT NULL,
	d INT NOT NULL,
	UNIQUE KEY(b),
	UNIQUE KEY(d),
	UNIQUE KEY(c)
)ENGINE=INNODB,CHARSET=utf8;

//插入几条数据
INSERT INTO z SELECT 1,2,3,4;
INSERT INTO z SELECT 5,6,7,8;
INSERT INTO z SELECT 9,10,11,12;

上述示例创建了一张表 z,有a、b、c、d 四个列。b、c、d 三列上都有唯一索引,不同的是 b 列允许 NULL 值。由于没有显式地定义主键,因此会选择非空的唯一索引,可以通过下面的SQL语句判断表的主键值:

//查询情况,_rowid可以判断主键是哪一列
SELECT a,b,c,d,_rowid FROM z;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值