我正在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中有所不同吗?
提前致谢。
答案 0 :(得分:0)
当您有十亿个记录时,每个记录保存一个字节确实是十亿字节,但保存在1000字节记录上的字节仍然只保存0.1%,无论记录数量多少。这都是相对的。 :)
如果您希望存储既不经常也不快速访问的大量数据,那么您可能会从实际压缩数据的存储设施中获益更多。也许您可以查看MySQL的ARCHIVE
存储引擎:
https://dev.mysql.com/doc/refman/5.0/en/archive-storage-engine.html
它是一种特殊的存储引擎,可在插入行时压缩行。它没有索引,只支持insert
和select
(无delete
和update
),但对于只需要输出大量数据的应用程序(记录等等,它可能就是你正在寻找的东西。