mysql inndo_inndo 表与存储逻辑_1

------------------------------------------2015-03-03---------------------------------------

表 :

innodb 中的表都是根据主键顺序组织存放的, 这种存储方式的表称为索引组织表.  每张表都有一个主键字段. 如果没有显示的定义主键, 则会按一下顺序创建主键.

1. 判断表中是否有非空的唯一索引, 如果有, 则该字段既为主键. (当表中有多个唯一且非空的字段时, 则以定义索引的顺序排序, 取第一个字段)

2. 如果不满足上面的条件, 则innodb自行创建一个长度为6字节大小的字段, 定义为主键.

create table h (a int not null, b int not null ,c int ,unique key(b), unique key(a));

insert into h value (1,2,3),(4,5,6);

使用 _rowid 可以显示数据行的主键值, 表 h 的主键为 b 字段.

select a,b,c,_rowid from h;

+---+---+------+--------+

| a | b | c | _rowid |

+---+---+------+--------+

| 1 | 2 | 3 | 2 |

| 4 | 5 | 6 | 5 |

+---+---+------+--------+

查看表结构,可以看到. 字段b 被定义为主键

mysql>desc h;+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| a | int(11) | NO | UNI | NULL | |

| b | int(11) | NO | PRI | NULL | |

| c | int(11) | YES | | NULL | |

+-------+---------+------+-----+---------+-------+

存储空间.

innodb的数据都别逻辑地存放在一个空间中(磁盘).称之为表空间(tablespace). 表空间又由段(segment) ,区(extent) ,页(page) 组成. 就像下面这样的一个关系.

96a1423f381c5a721ce23fd480c32554.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值