mysql innodb page_mysql原理~ innodb_page工具详解

一 目的:分析mysql idb文件具体构成

二 核心语句

SELECT A.SPACE AS TBL_SPACEID, A.TABLE_ID, A.NAME AS TABLE_NAME, FILE_FORMAT, ROW_FORMAT, SPACE_TYPE, B.INDEX_ID , B.NAME AS INDEX_NAME, PAGE_NO, B.TYPE AS INDEX_TYPE FROM INNODB_SYS_TABLES A LEFT JOIN INNODB_SYS_INDEXES B ON A.TABLE_ID =B.TABLE_ID WHERE A.NAME = 'db/table';

三 基础

mysql默认页大小是16K 所以以下都是参数为16

四 具体用法:

1 ./innblock table.idb scan 16 查看全部索引

我们能获取的内容

1 Datafile Total Size

2 INDEX_ID(此处的INDEX_ID正好核对sql语句查询到的结果)

3 block no  (page_no,可以根据此进行如下分析)

2 /innblock table.idb page_no 16 查看具体的数据页构成

我们能获取的内容

1 block_no: page_no_id

2 space_id: 表空间ID

3 index_id: 索引页ID

4 n_rows: 具体行数 不含deleted且已被purged的记录

5 del_bytes: 本索引页中所有deleted了的且已被purged的记录的总大小。

链表

Total del rows:1 del rows list(logic): 任何被打标记并且被purge的都会记录在此

五 总结

本文内容来源于八怪大神的help文档,我只是做个自学的记录 见谅

六 补充

如何计算表索引的B+树高度

根据上面sql语句进行查询  出关键记录 page_no -> primary

1 B+树的高度则为 page_no+1

2 B+树的高度决定了要做多少次IO操作, 几千万行的高度有可能和几百万的高度一样

3 B+树的高度通常是1-3

4 primary page number代表主键索引的根页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值