【问题标题】:Why would two mysql files (same table, same contents) be different in size?为什么两个mysql文件(相同的表,相同的内容)大小不同?
【发布时间】:2009-05-29 22:39:26
【问题描述】:

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

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

我很好奇为什么会这样。

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

在 b 树结构本身中存在碎片是否有意义? (说的是数据库层,而不是操作系统文件系统层)我原本以为“不”,但话说回来,这种碎片不是 DBA 压缩数据库文件任务的基础吗?

我想知道这是否只是文件系统层的产物。即新主机的磁盘驱动器大部分为空,因此较少的碎片将导致分配新文件。再说一次,我认为碎片不会出现在报告的文件大小(Linux 操作系统)中。

【问题讨论】:

    标签: sql mysql filesystems


    【解决方案1】:

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

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

    对于 1-3% 的文件差异,我什至不会眨眼。

    【讨论】:

      【解决方案2】:

      根据我对 mysql 的了解,它在接近容量时有一个增长算法,安装时它选择了不同的大小,从而减少了多余的存储空间

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 1970-01-01
        • 2013-12-01
        • 2017-10-07
        • 2012-03-31
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多