wordpress Apache Eclipse插件 DHCP angularjs debugging scrapy background rss LimeJS progressjs vue修改样式 git视频 jquery去掉空格 js鼠标离开事件 增删改查sql语句 java清空数组 mysql汉化包 手动安装fastboot驱动 python日期转时间戳 python指数函数 python编程题 python基础代码 java删除 linux安装教程 球中的小鬼 java小程序 stretchcolumns dota改键工具 识别音乐的软件 kontakt gg修改器下载 华为ff js发送http请求 mac版matlab xmind画流程图 突袭时间表 大数据之路 android开发案例 商标查询软件
当前位置: 首页 > 学习教程  > 编程语言

mysql数据结构(页结构、行结构、b+树结构)

2021/2/13 20:19:05 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

mysql数据结构行结构页机构File Header(文件头部)Page Header(页面头部)Page Directory(页目录)B树行结构 mysql中记录行的结构: 对于下面俩个字段的理解: n_owned (4个字节 )&am…

mysql数据结构

  • 行结构
  • 页机构
    • File Header(文件头部)
    • Page Header(页面头部)
    • Page Directory(页目录)
  • B+树

行结构

mysql中记录行的结构:
在这里插入图片描述
在这里插入图片描述
对于下面俩个字段的理解:
n_owned (4个字节 ): 普通记录行数据中此字段是不会有值得,此字段是页中数据分组后每组中最大记录行才会有值,记录的是该组中记录的条数

在这里插入图片描述

分组是按照下边的步骤进行的: 初始情况下一个数据页里只有最小记录和最大记录两条记录,它们分属于两个分组。
之后每插入一条记录,都会从页目录中找到主键值比本记录的主键值大并且差值最小的槽,然后把该槽对应的记录的n_owned值加1,表示本组内又添加了一条记录,直到该组中的记录数等于8个。
在一个组中的记录数等于8个后再插入一条记录时,会将组中的记录拆分成两个组,一个组中4条记录,另一个5条记录。这个过程会在页目录中新增一个槽来记录这个新增分组中最大的那条记录的偏
移量。

heap_no(13字节 ): 表示当前记录在记录堆的位置信息 个人理解就是数据行在页面中的编号

页机构

在这里插入图片描述

File Header(文件头部)

在这里插入图片描述

注意上图中划红线处,页号只有4个字节,也就是说mysql一个innodb数据表最多只能有2^32
次方数据页,而一张表中最多能记录的数据行则是(2^32)*2条 (因为一个数据页中最少要有俩条记录)
在这里插入图片描述

Page Header(页面头部)

在这里插入图片描述

Page Directory(页目录)

在这里插入图片描述
左侧的槽就是页目录

B+树

在这里插入图片描述

在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_700438.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?