首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[MYSQL] 浏览器查看mysql数据文件磁盘结构

[MYSQL] 浏览器查看mysql数据文件磁盘结构

原创
作者头像
大大刺猬
发布2024-11-06 10:52:37
发布2024-11-06 10:52:37
6940
举报
文章被收录于专栏:大大刺猬大大刺猬

导读

为了帮助理解mysql的数据文件在磁盘上的格式, 之前整了个解析ibd文件的工具, 但效果不太好--即使有DEBUG之类的功能,依旧不好理解. 于是就想着来个图形化的, tkinter就不错, 但这软件通常是运行在字符终端的, 而且服务端基本上都没得图形化的, 那就只能选择浏览器了. 于是就整了个可以在浏览器上查看mysql数据文件的工具.

为了使用方便,就没使用第三方插件(比如bootstrap之类的好看点的组件)

配色比较丑, 见谅

使用

win和linux使用是完全一样的(py3的功劳),

代码语言:shell
复制
wget https://github.com/ddcw/ibd2sql/archive/refs/heads/main.zip
unzip main.zip
cd ibd2sql-main
python3 ibd2sql_web.py /data/mysql_3314/mysqldata/db1/t.ibd

然后就可以在浏览器上查看了. 默认是监听的0.0.0.0, 即可以使用任意端口访问, 若有特殊需求要更改监听地址或者端口的, 直接编辑脚本即可

不多扯了, 直接看效果吧

终端只是个简单的提示

浏览器上显示效果如下:

左边是索引, 支持查看所有索引的结构(mysql的数据文件就是一堆索引). 点击任意索引即可,默认是主键.

比如当前显示的就是主键的ROOT PAGE(页ID为:4, 有186条数据,即有186个二层节点). 没得上一页和下一页.

root page

点击当前页可以查看详细信息, 比如

我们可以看到page_level为2, 即代表有2层; root page比较特殊, 还有seg_leaf和seg_top之类的信息.

node page

然后我们点击任意节点 即可进入该节点. 比如我们点击id=270239的节点

然后我们就可以看到如下信息:

当然也可以点击<当前页>来查看基础信息,

比如我们看到,这一页有1120个字段, page_level是1, 表示还有1层. seg_leaf之类的就没得了. 前一页是70, 下一页是72, 这是逻辑顺序(由于我们是连续插入的数据,所以大概率是也是连着的).

leaf page

既然还有一层, 那我们再随便点击一个node, 即可进入下一层. (感觉可以做成游戏..)

就选择id=27188的node吧

然后我们就进来了, 可以看到如下信息:

老规矩, 先点<当前页>查看详情

发现page_level=0,表示这是叶子节点了. 如果是主键的话, 叶子节点是记录完整数据的. 二级索引的话,是记录的主键的值(回表).

为了展示美观, 默认只展示key的值, 要详情的话, 点击任一节点即可. 比如我们点击id=271689的

可以看到 主键是271689, 剩下2个字段(field)也是271689 (造数据的时候方便..)

DDL

当前我们的DDL功能也是保留的, 点击左边的DDL也是可以查看的

其它

二级索引

刚才演示的是主键索引, 二级索引也是完全一样的.只不过是field换成了主键信息

前后页

这里的前后页就是btr+的链表关系. 每一层(除了root page)的node之间都是这样链接起来的, 主要是为了方便查找,不然还得返回父节点去... (DIR_SLOTS之类的都是为了方便查找的)

总结

虽然界面不好看, 但还是很好理解的. 有什么需求或者建议可以留言或者提issue.

项目地址: https://github.com/ddcw/ibd2sql

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导读
  • 使用
    • root page
    • node page
    • leaf page
    • DDL
  • 其它
    • 二级索引
    • 前后页
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档