【问题标题】:does BIT fill unused space past 1 byte?BIT 会填充 1 个字节后的未使用空间吗?
【发布时间】:2013-03-21 03:03:00
【问题描述】:

我的表格可能会有非常大的行长度。如果我没看错,一个值为1BIGINT 将占用全部8 个字节。 http://dev.mysql.com/doc/refman/5.5/en/storage-requirements.html

这似乎非常低效。

BIT 的行为方式是否相同,或者它是可变长度的混合体?我知道使用少于 1 个完整字节仍会消耗 1 个字节的磁盘空间,除非有其他 BITs,例如,如果我正确阅读,8 个 BIT 1 列将只占用 1 个字节。

换句话说,如果我有一个BIT 41 没有其他BIT 列,那么该列的0 行将消耗1 个字节或完整的6 个字节,而不是2^41-1当然占满 41 位?

【问题讨论】:

    标签: mysql bit diskspace variable-length space-efficiency


    【解决方案1】:

    According to the docs,看起来你运气不好:有点总是你指定的大小。事实上,it will most likely be larger. 您可以考虑将您的位序列化为 BLOB 字段,因为它们可变长度的。

    【讨论】:

    • 第二个链接的关键部分是:“该规则的一个例外是 BIT 类型,它不是 4 字节对齐的。在 MySQL 集群表中,BIT(M) 列需要 M位存储空间。但是,如果表定义包含 1 个或多个 BIT 列(最多 32 个 BIT 列),则 NDBCLUSTER 为这些保留每行 4 个字节(32 位)。如果表定义包含超过 32 个 BIT 列(最多 64 个这样的列),则 NDBCLUSTER 每行保留 8 个字节(即 64 位)。”
    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多