首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Data_length表的“InnoDB”这句话有什么问题吗?

问关于Data_length表的“InnoDB”这句话有什么问题吗?
EN

Stack Overflow用户
提问于 2016-09-19 00:37:18
回答 1查看 216关注 0票数 1

根据MySQL手册:显示表状态

对于InnoDB,Data_length是为聚集索引分配的大小(以字节为单位)。具体来说,它是聚集索引大小(以页面为单位)乘以InnoDB页面大小。

我对“内存量”感到困惑,因为聚集索引存储在磁盘上,而不是存储在内存中。

我认为正确的表达方式应该是:

对于InnoDB,Data_length是为聚集索引分配的磁盘空间的近似量(以字节为单位)。

谁能帮我解释“ of memory"?

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 00:26:01

呀!那是个神秘的句子。在http://bugs.mysql.com上提交一个“文档”错误。“记忆量”是一个错误的词汇选择。

这里有一些更多的信息,希望我能更好地解释。

InnoDB表主要由“数据”和“索引”(以及一些元信息和空闲空间)组成。数据信息和PRIMARY KEY都在BTree中,而该树的当前大小正是以Data_length表示的。它是块大小的确切倍数,默认为16 to。所以,您所能做的最小的InnoDB表仍然是Data_length=16384。

PRIMARY KEY (总是在InnoDB中)与数据“群集”。数据由PK排序。

其他索引称为“二级索引;它们位于单独的BTree(s)中,其总长度为Index_length。

大小为innodb_buffer_pool_size的“缓冲池”是内存中的一部分,其中数据和索引块被缓存以供InnoDB引擎高效使用。在打开表之前,它的任何块都不存在于RAM中。引擎从不故意将整个表(或整个辅助索引等)加载到RAM中。

一个相关的混乱..。Rows和Avg_row_length是近似的。一个是估计的,另一个是由Data_length除以它来计算的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39563925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档