根据MySQL手册:显示表状态
对于InnoDB,Data_length是为聚集索引分配的大小(以字节为单位)。具体来说,它是聚集索引大小(以页面为单位)乘以InnoDB页面大小。
我对“内存量”感到困惑,因为聚集索引存储在磁盘上,而不是存储在内存中。
我认为正确的表达方式应该是:
对于InnoDB,Data_length是为聚集索引分配的磁盘空间的近似量(以字节为单位)。
谁能帮我解释“ of memory"?
发布于 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除以它来计算的。
https://stackoverflow.com/questions/39563925
复制相似问题