首页 >数据库 >mysql教程 >PostgreSQL 中 NULL 值实际使用了多少磁盘空间?

PostgreSQL 中 NULL 值实际使用了多少磁盘空间?

Patricia Arquette
Patricia Arquette原创
2024-12-26 10:53:14418浏览

How Much Disk Space Do NULL Values Actually Use in PostgreSQL?

PostgreSQL 中 NULL 值的磁盘空间要求

创建数据库表时,考虑其列的存储要求非常重要,尤其是处理可为空值时。了解 NULL 值的存储方式可以优化磁盘空间使用。

NULL 值的存储

在 PostgreSQL 中,NULL 值使用位掩码表示,称为空位图。位图中的每一位对应于表中的一列。如果某位设置为 1,则表示对应列为 NULL。

NULL 位图占用的磁盘空间

空位图的大小取决于表中的列数。对于8列或更少的表,位图占用1个字节。对于9到64列的表,占用2个字节,以此类推。但是,由于数据对齐的原因,无论列数多少,包含至少一个 NULL 值的行的最小存储要求是 1 个字节。

NULL 列的开销

除了空位图之外,管理空列不需要额外的字节。然而,在系统目录 pg_attribute 中标记为“已删除”的已删除列仍占用空位图中的一位。此开销可能会持续到执行转储/恢复周期为止。

示例和测试结果

考虑一个具有以下列定义的表:

"MyColumn" smallint NULL

在此列中存储值 0 或 1 将需要 2 个字节。对于 NULL 值,适用以下存储要求:

  • 对于具有 8 或更少列的表:

    • 没有额外的磁盘空间
  • 适用于 9 至 64 人的桌子列:

    • 空位图 1 个字节
  • 对于超过 64 列的表:

    • 多个额外的字节MAXALIGNs

广泛的测试表明这些存储要求对于所有表都是一致的。通过在小表(少于 9 列)中存储 NULL 值来优化磁盘空间使用是有益的,但在较大的表中它变得不那么重要。

以上是PostgreSQL 中 NULL 值实际使用了多少磁盘空间?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn