MySQL删除空间发布

MySQL删除空间发布,mysql,innodb,information-schema,Mysql,Innodb,Information Schema,我知道在mysql中执行DELETESQL不会释放空间,所以我做了一个实验 在实验过程中,我发现当我的数据量很大(大约20000行)时,我删除了一半的行,数据长度并没有减少。 但当我的数据大小约为1000行时,我会尝试删除一半的行。意外地,数据长度将减少 真让人困惑。关于这个问题我搜索了很多,但一无所获。原因是什么 我的MySQL版本是5.6InnoDB表统计信息不会在每次删除时更新。因此,data\u length、index\u length、rows、average\u row\u len

我知道在mysql中执行DELETESQL不会释放空间,所以我做了一个实验

在实验过程中,我发现当我的数据量很大(大约20000行)时,我删除了一半的行,数据长度并没有减少。 但当我的数据大小约为1000行时,我会尝试删除一半的行。意外地,数据长度将减少

真让人困惑。关于这个问题我搜索了很多,但一无所获。原因是什么


我的MySQL版本是5.6

InnoDB表统计信息不会在每次删除时更新。因此,
data\u length
index\u length
rows
average\u row\u length
data\u free
可能无法始终描述表的精确状态

您可能想阅读:

即使在更新了表统计数据之后,它们也不精确。它们是基于表格中有限样本的估计值



还应该提到的是,表空间文件的大小保持在其高水位线,即使数据长度减少。不同之处在于,文件系统中的空间是文件的一部分,但不再被数据或索引占用。InnoDB应该在进一步扩展文件之前重用表空间中的“空闲”空间。

在更新stat之后,它可能不准确,但这表明数据长度肯定减少了,并且“删除不会释放空间”的冲突.我真的很困惑me@bjwzds-是不是
Data\u free
和/或
Index\u free
同时上涨了?比尔——我认为这两个链接都与数据长度等无关,它们只适用于优化器统计数据。我认为长度数据与索引基数的其他抽样统计数据是同时更新的。这些表是InnoDB吗?每个表的innodb文件设置是什么?你是如何衡量“释放”的?