【问题标题】:Does empty text occupy space in database空文本是否占用数据库中的空间
【发布时间】:2018-06-02 17:07:55
【问题描述】:

text(type) 是否占用数据库空间?仅使用数据库表的一列,如果在该列中插入数据,大小将不超过 2 位整数。首先,我为此列设置了int(2),但它保留了0 的值,即使它是空的。不管多少,但即使有0值也会占用空间。我对吗 ?所以我将int 切换到text,认为如果没有插入数据,text 字段将为空。我的假设正确吗?空文本是否占用空间?

【问题讨论】:

  • 使用 InnoDB,存储是按页分配的。如果我们的更改允许更多行放入每个页面,那么表的存储量可能会减少。但是如果我们仍然在一个页面上放置相同数量的行,那么不会对表格使用的空间产生任何影响。

标签: mysql database int


【解决方案1】:

空文本(类型)是否占用数据库空间?

 Yes, it does. But it doesn't contribute to table row size. Text and Blob stored in different area of memory. It contributes only 9-12 bytes.

但是,不同的存储引擎在 MySQL 中以不同的方式处理这些数据的分配和存储,这取决于它们用于处理相应类型的方法。

Int(2) 将始终占据硬盘驱动器的 2 个字节,无论您存储什么 (0) 或 max(2^8),它都会为表行大小贡献 2 个字节。

【讨论】:

    【解决方案2】:

    空白将占用最少的空间: i) NULL 位图中的一位 ii) 两个字节的长度(NULL 时为零。

    【讨论】:

      【解决方案3】:

      我认为空文本 = NULL,所以是的,它应该占用空间。等别人。我就是这么想的。

      【讨论】:

        【解决方案4】:

        是的,Empty 意味着我们正在传递一个空值。所以需要空格。

        【讨论】:

        • 在 MySQL 中,存储在 TEXT 数据类型中,空(零长度)字符串与 NULL 值不同。对于长度字段,NULL 值需要零字节的存储空间,零长度字符串需要两个字节的存储空间。 (表示NULL值的位保留在行头中。可空列的数量决定了为空指标保留的存储量,这个空间是固定的,不依赖于行中存储的数据。)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-06-22
        • 2011-01-24
        • 2011-02-10
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多