You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Aurora PostgreSQL中json/jsonb列允许的最大数据大小

Aurora PostgreSQL json/jsonb类型列最大存储大小查询方法

首先明确:你查information_schema.columns的character_maximum_length返回空是正常现象,不是查询方式错了。

  • character_maximum_length字段仅对varchar(n)、char(n)这类用户显式定义了长度上限的字符类型返回有效值,json、jsonb、text、bytea这类无用户自定义长度的变长类型,该字段固定返回null。

固定存储上限规则

不管是社区版PostgreSQL还是Aurora PostgreSQL,json和jsonb类型单值的硬编码存储上限是1GB,该值是内核层面写死的默认规则,没有存储在系统配置表中,不需要额外查询参数获取。

注意:该1GB限制指的是字段值的逻辑大小,默认开启TOAST压缩机制时,实际落盘占用的物理空间会小于逻辑值大小,但字段存储的内容总大小不能超过1GB,超出后写入会直接报错。Aurora PostgreSQL没有修改社区版的这个默认上限规则。

验证当前列是否存在自定义长度限制

如果需要确认目标json/jsonb列有没有被手动加过额外的长度约束,可以通过以下SQL排查:

  1. 先确认列的类型定义
SELECT 
  table_name,
  column_name,
  data_type,
  udt_name
FROM information_schema.columns 
WHERE table_name = '替换为你的目标表名' 
  AND column_name = '替换为你的目标json/jsonb列名';

返回结果中data_type为json或jsonb即代表是标准的json类型列。

  1. 排查列上是否存在手动添加的长度check约束
SELECT conname, pg_get_constraintdef(c.oid) AS constraint_def
FROM pg_constraint c
JOIN pg_class t ON c.conrelid = t.oid
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
WHERE t.relname = '替换为你的目标表名'
  AND a.attname = '替换为你的目标json/jsonb列名'
  AND c.contype = 'c';

如果查询结果为空,说明该列没有额外自定义长度限制,直接遵循1GB的内核存储上限。

内容的提问来源于stack exchange,提问作者Fulliautomatix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 11:57:13