1、表以.ibd文件的形式存储在硬盘上;
2、文件内部按照16k分为1个数据页;
3、有一个唯一的标记来标记每个数据页,即页码;
4、为了串联不同的页面,每个页面的页眉都会记录前后页面的地址,验证数据;以及数据的目录信息;
Innodb引擎、内存存储方式
1、索引内部使用B+树表数据; B+个叶子节点用来存储数据,非叶子节点用来存储索引。
2、B+树节点大小与数据页大小一致;非叶子节点存储主键(取决于主键大小p)和内存页号的指针(4字节)。叶子节点存储行数据,每行占用空间q
如何计算一个表支持的数据项数量?
1、指向其他页面的非叶子节点数量为x
x=(16-1)*1024/(p+4) 其中1k 是头部尺寸
2、一个叶子节点可以容纳的数据行数为y
y=(16-1)*1024/q
3.B+树的层数为z
项目总数Total=x^(z-1) *y
例子
z=3,p=8(主键bigint),q=1k,则总计=2000w 项。前2层占用20M内存。第三层是叶子节点,存储数据,占用磁盘20G。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/4737.html
用户评论
其实就是说mysql用innoDB引擎查询东西的时候是用磁盘读还是内存读吧?挺实际的问题
有19位网友表示赞同!
我一直觉得InnoDB和Memcached性能差别蛮大的,不知道是啥原因
有18位网友表示赞同!
这篇文章好像没讲到InnoDB缓存的管理机制啊,这个挺重要滴
有11位网友表示赞同!
我觉得对优化查询速度来说,磁盘IO和内存访问速度区别还是挺明显的
有11位网友表示赞同!
看了下标题,感觉要了解一下内存优化技术了
有9位网友表示赞同!
明白了,如果数据频繁更新的话,内存数据检索会更快?
有6位网友表示赞同!
想深入了解InnoDB的缓存策略,这个题有点难啊!
有18位网友表示赞同!
这篇帖子应该分析下影响磁盘和内存检索效率的因素吧
有19位网友表示赞同!
我之前没注意过这些细节,还是要多学习一下啊
有18位网友表示赞同!
好想知道磁盘检索速度太慢怎么办?有没有优化技巧?
有6位网友表示赞同!
感觉这种混合式数据检索方式挺适合实际环境应用的
有6位网友表示赞同!
对新手来说,理解InnoDB的检索机制还是有点难度哦
有6位网友表示赞同!
看这标题就知道,数据库底层实现机制太复杂了
有12位网友表示赞同!
"Innodb的磁盘和内存数据检索方式" 是个好主题,很多人都想了解这个问题
有18位网友表示赞同!
这个分析应该能帮助我更好地理解MySQL的数据处理流程
有9位网友表示赞同!
我感觉这篇文章会介绍一些具体的案例,比如哪些数据适合内存存储
有14位网友表示赞同!
对开发者来说,理解InnoDB的检索方式很重要!
有18位网友表示赞同!
这篇帖子肯定会有很实用的技巧和建议
有5位网友表示赞同!