为什么两个mysql文件(相同的表,相同的内容)大小不同?

时间:2009-05-29 22:39:27

标签: sql mysql filesystems

我使用了现有的MySQL数据库,并在新主机上设置了副本。

新主机上某些表的文件大小比旧主机上的对应文件小1-3%。

我很好奇为什么会这样。

我的猜测是,旧主机的文件随着时间的推移而增长,并且在该文件的b树结构中,存在更多碎片。而新主机,因为它是从头开始创建文件(通过二进制日志),避免了这种碎片。

在b树结构本身内是否存在碎片甚至是否有意义? (在数据库层中说话,而不是关于操作系统文件系统层)我最初认为“不”,但是再一次,压缩数据库文件的DBA任务的基础是不是这样的碎片?

我想知道这可能只是文件系统层的工件。即,新主机具有大部分空的磁盘驱动器,因此较少的碎片将导致分配新文件。然后,我不认为碎片会出现在报告的文件大小(Linux OS)中。

2 个答案:

答案 0 :(得分:2)

从我对mysql的理解它有一个增长的算法,因为它接近容量,当它安装它选择了不同的大小,多余修剪多余的存储

答案 1 :(得分:2)

MySQL数据文件或索引文件肯定存在碎片。这很常见,甚至故意

也就是说,存储引擎可能会故意留下一些额外的空间,因此当您更改值时,它可以适应行,而无需重新排序整个数据文件。甚至可以使用服务器属性来配置要分配多少slop空间。

我甚至不会对文件差异为1-3%而眨眼。

相关问题