小编Max*_*nce的帖子

Postgres 列限制

我有一个 PostgreSQL 表,目前非常大:340 列。该表旨在保存复杂 PDF 的样式。

随着时间的推移,我做出了一些改变:删除了一些列,添加了一些新的列等等......并且它可能仍会进一步发展。实际上我当前的需要是将列数加倍。

根据https://www.postgresql.org/docs/current/limits.html,表的上限是:

  • 1600列
  • 8192 字节的堆页

我在 Rails 应用程序中模拟了所有可能的情况来计算最大堆页,目前看起来不错,大小为 2.5KB。我的大多数列都是布尔类型(1 字节)、整数(4 字节)和双精度(8 字节)类型。还有一些特征有所不同,但数量很少。

Postgres 文档还指定:“从表中删除的列也会影响最大列限制。此外,尽管新创建的元组的删除列值在元组的空位图中内部标记为空,但空位图也占用空间”。

由于我不想使用 JSON 列,因此我不会将列数加倍,而是创建另一个表。然而,上述 340 列可能会比 340 列进一步推进。

所以这是我的问题:

  • 如何从 psql 客户端了解列的总数,包括已销毁的列
  • 被破坏的列中的元组的大小是多少?
  • 是否可以从特定记录(仍然是 psql )获取堆页面大小?
  • 如果达到两个限制之一,数据库将如何失败:数据库是否损坏、表损坏还是只是记录损坏(如果达到的限制是堆页大小)

postgresql

2
推荐指数
1
解决办法
1459
查看次数

标签 统计

postgresql ×1