【问题标题】:Shall I SET STORAGE PLAIN on fixed-length bytea PK column?我应该在固定长度的 bytea PK 列上设置 STORAGE PLAIN 吗?
【发布时间】:2020-10-19 15:56:35
【问题描述】:

我的 Postgres 表的主键是一个 SHA1 校验和(总是 20 字节),存储在 bytea 列中(因为 Postgres 没有固定长度的二进制类型)。

我是否应该 ALTER TABLE t ALTER COLUMN c SET STORAGE PLAIN 不让 Postgres 压缩和/或外包 (TOAST) 我的 PK/FK 以便查找和加入性能?为什么(不)?

【问题讨论】:

    标签: postgresql performance join storage primary-key


    【解决方案1】:

    我会说这是一种微优化,可能不会产生可衡量的效果。

    首先,PostgreSQL 仅在行超过 2000 字节时才考虑压缩和切片值,因此只有当您的行经常超过该大小时才会产生影响。

    然后,即使主键列被烘烤,您也可能只有在一次表扫描中选择大量行时才能衡量差异。按索引仅获取几行不会有很大的不同。

    我会对这两种方法进行基准测试,但我认为很难衡量差异。 I/O 和其他成本可能会隐藏解压缩所需的少量额外 CPU 时间(请记住,首先要启动 TOAST 的行必须很大)。

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 2021-12-09
      • 2014-10-05
      • 1970-01-01
      相关资源
      最近更新 更多