如何获得最小的mysql行大小

时间:2014-04-13 19:31:31

标签: mysql

我正在MySql(InnoDB)中设计一个表,并希望确保它占用磁盘上的绝对最小空间。我的问题是:行存储大小是否取决于表中列的顺序?

例如,这里是列顺序1:

    bigint (8 bytes)
    tinyint (1 byte)
    int (4 bytes)
    int (4 bytes)
    tinyint (1 byte)

此表格行占用的磁盘空间是否与此情况下的磁盘空间不同(订单2):

    bigint (8 bytes)
    tinyint (1 byte)
    tinyint (1 byte)
    int (4 bytes)
    int (4 bytes)

或许这(订单3):

    bigint (8 bytes)
    int (4 bytes)
    int (4 bytes)
    tinyint (1 byte)
    tinyint (1 byte)

我记得很久以前在一个环境中工作,其中顺序很重要(重要的是没有字段跨越4字节边界定位)。它在MySQL 5.x中有所不同吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

当您有十亿个记录时,每个记录保存一个字节确实是十亿字节,但保存在1000字节记录上的字节仍然只保存0.1%,无论记录数量多少。这都是相对的。 :)

如果您希望存储既不经常也不快速访问的大量数据,那么您可能会从实际压缩数据的存储设施中获益更多。也许您可以查看MySQL的ARCHIVE存储引擎:

https://dev.mysql.com/doc/refman/5.0/en/archive-storage-engine.html

它是一种特殊的存储引擎,可在插入行时压缩行。它没有索引,只支持insertselect(无deleteupdate),但对于只需要输出大量数据的应用程序(记录等等,它可能就是你正在寻找的东西。