gpt4 book ai didi

mysql - 关于 InnoDB 表的 'Data_length' 这句话有什么问题吗?

转载 作者:行者123 更新时间:2023-11-28 23:25:30 24 4
gpt4 key购买 nike

根据MySQL手册:SHOW TABLE STATUS

For InnoDB, Data_length is the approximate amount of memory allocated for the clustered index, in bytes. Specifically, it is the clustered index size, in pages, multiplied by the InnoDB page size.

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

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

For InnoDB, Data_length is the approximate amount of disk space allocated for the clustered index, in bytes.

谁能帮我解释一下“内存量”?

最佳答案

哎呀!那是一句隐晦的句子。在 http://bugs.mysql.com 提交“文档”错误. “内存量”用词不当。

这里有更多信息;希望我能更好地解释它。

InnoDB 表主要由“数据”和“索引”(以及一些元信息和可用空间)组成。数据信息 PRIMARY KEY 都在 BTree 中,并且该树的当前大小在 Data_length 中给出。它是 block 大小的精确倍数,默认为 16KB。因此,您可以创建的最小 InnoDB 表仍然会显示 Data_length=16384

PRIMARY KEY(总是在 InnoDB 中)与数​​据“聚集”在一起。数据按PK排序。

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

大小为 innodb_buffer_pool_size 的“缓冲池”是 RAM 的一部分,其中数据和索引 block 被缓存以供 InnoDB 引擎高效使用。在打开表之前,它的 block 都不在 RAM 中。引擎永远不会故意将整个表(或整个二级索引等)加载到 RAM 中。

相关的混淆... RowsAvg_row_length 是近似值。一个是估计值,另一个是根据 Data_length 除以它计算得出的。

关于mysql - 关于 InnoDB 表的 'Data_length' 这句话有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com