toastinfo

显示TOAST字段的详细信息

概览

扩展包名版本分类许可证语言
toastinfo1.5STATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
6530toastinfo-
相关扩展pageinspect pg_visibility pgstattuple amcheck pg_relusage pg_buffercache pg_freespacemap pg_repack

版本

类型仓库版本PG 大版本包名依赖
EXTMIXED1.51817161514toastinfo-
RPMPIGSTY1.51817161514toastinfo_$v-
DEBPGDG1.51817161514postgresql-$v-toastinfo-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
d12.aarch64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
d13.x86_64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
d13.aarch64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
u22.x86_64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
u22.aarch64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
u24.x86_64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
u24.aarch64
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5
PGDG 1.5

构建

您可以使用 pig build 命令构建 toastinfo 扩展的 RPM 包:

pig build pkg toastinfo         # 构建 RPM 包

安装

您可以直接安装 toastinfo 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install toastinfo;          # 当前活跃 PG 版本安装
pig ext install -y toastinfo -v 18  # PG 18
pig ext install -y toastinfo -v 17  # PG 17
pig ext install -y toastinfo -v 16  # PG 16
pig ext install -y toastinfo -v 15  # PG 15
pig ext install -y toastinfo -v 14  # PG 14
dnf install -y toastinfo_18       # PG 18
dnf install -y toastinfo_17       # PG 17
dnf install -y toastinfo_16       # PG 16
dnf install -y toastinfo_15       # PG 15
dnf install -y toastinfo_14       # PG 14
apt install -y postgresql-18-toastinfo   # PG 18
apt install -y postgresql-17-toastinfo   # PG 17
apt install -y postgresql-16-toastinfo   # PG 16
apt install -y postgresql-15-toastinfo   # PG 15
apt install -y postgresql-14-toastinfo   # PG 14

创建扩展

CREATE EXTENSION toastinfo;

用法

toastinfo: 检查 varlena 列的 TOAST 存储详情

toastinfo 暴露变长(varlena)数据类型的内部存储形式,显示 PostgreSQL 如何存储每个数据。

函数

pg_toastinfo(anyelement) – 描述数据的存储形式:

SELECT a, length(b), pg_column_size(b), pg_toastinfo(b), pg_toastpointer(b)
FROM t;

        a         | length  | pg_column_size |              pg_toastinfo              | pg_toastpointer
------------------+---------+----------------+----------------------------------------+-----------------
 null             |       * |              * | null                                   |               *
 default          |       7 |              8 | short inline varlena                   |               *
 external-200     |     200 |            204 | long inline varlena, uncompressed      |               *
 external-10000   |   10000 |          10000 | toasted varlena, uncompressed          |           16427
 extended-10000   |   10000 |            125 | long inline varlena, compressed (pglz) |               *
 extended-1000000 | 1000000 |          11452 | toasted varlena, compressed (pglz)     |           16429
 extended-1000000 | 1000000 |           3936 | toasted varlena, compressed (lz4)      |           16430

可能的存储形式:

  • null – NULL 值
  • ordinary – 非 varlena 数据类型
  • short inline varlena – 最多 126 字节(1 字节头)
  • long inline varlena, (un)compressed – 最大 1GiB(4 字节头)
  • toasted varlena, (un)compressed – 最大 1GiB,存储在 TOAST 表中
  • 压缩的 varlena 在 PG14+ 上显示压缩方法(pglzlz4

pg_toastpointer(anyelement) – 返回 TOAST 表中的 chunk_id OID,非 TOAST 数据返回 NULL:

SELECT pg_toastpointer(large_column) FROM my_table;

最后修改 2026-03-14: update extension metadata (953cbd0)