innodb行记录

b+树叶节点存放的是一整行数据
非叶节点存放键值(如果是主键索引 就是主键)和指针(下一层的位置 pageno)
各个页是通过指针连接的,逻辑上是有序的,如图1

 


聚集索引记录存在以下系统列
rowid:b+树索引键值 否则就是用户的pk值
trx id
roll pointer
如果有唯一非空索引,也可以作为主键;如果有两个唯一非空索引,第一个定义的为主键。
select a,b,c,_rowid from abcd;
如果主键值不是int类型 rowid返回不了
怎么查看主键值??? 用元数据表查看 desc abcd;
create table abcd(
a varchar(20),
b varchar(20) not null,
c varchar(20) not null,
unique key(a),
unique key(c),
unique key(b))
c为主键
系统主键对用户不可见rowid 6字节
innodb另外两个隐藏的列(存放在每行记录里,myisam没有)
trx id 6字节 roll pointer 7字节
 
如果a b两个innodb表都没有主键 系统建的rowid是1 2 3自增的吗???主键值是共用的(全局rowid)sys_rowid
如果系统创建的主键 _rowid是查不出来的
 
记录格式由row-format决定
innodb_default_row_format
redudent:老的
compact;5.6默认
char和varchar的区别 varchar不能原地更新
字符集utf8mb4
char(N) N是字符数 填充字节
字符型数据如何在页中存放,如图2

 


页分裂之前 如果有碎片页,reognized一下 ( 在内存中)将碎片释放出来
analyze table 
hexdump每个页
 
三层树可以有多少条记录,如图3

 


怎么查看b加树的层数???
dynamic记录格式优化大对象记录的存储
一个页能存放的记录越多,则性能越优
如果某个字段 text类型 20000字节 一个页不够
compact:a |b|c|d(768字节/20字节指针)???
innodb_file_format=Barracuda
b+树索引可以快速定位到一条记录(错误)
b+树索引只能快速定位到记录所在的页(正确)

转载于:https://www.cnblogs.com/lvjinping/p/9186059.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值