我正在 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 中有什么不同吗?
提前致谢。
最佳答案
当你有十亿条记录时,每条记录节省一个字节确实是十亿字节,但是在 1000 字节的记录上保存一个字节仍然只节省了 0.1%,无论记录的数量如何。这都是相对的。 :)
如果您想存储访问不频繁且访问速度不快的大量数据,那么您可能会从实际压缩数据的存储设施中获益更多。也许你可以看看 ARCHIVE
MySQL的存储引擎:
https://dev.mysql.com/doc/refman/5.0/en/archive-storage-engine.html
它是一种特殊的存储引擎,在插入行时对其进行压缩。它没有索引,并且只支持 insert
和 select
(没有 delete
和 update
),但对于只需要输出大量数据(日志记录等)的应用程序,它可能正是您要找的。p>
关于mysql - 如何获得最小的mysql行大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23047434/