PostgreSQL 数据类型 jsonb 最大存储范围

标签 postgresql types psql jsonb postgresql-9.6

我正在运行 PostgreSQL 版本 9.6.13。我有两个问题

  1. 数据类型“jsonb”和“text”的最大存储范围/大小是多少
  2. 如何找到其他字段的最大存储范围/大小?

我查看了 PostgreSQL 提供的“pg_type”目录表。 对于“文本”和“jsonb”数据类型,字段 typlen=-1 这意味着它们是可变长度类型,但我无法找到两者的最大存储大小。

最佳答案

有多个限制:

  1. TOAST 指定的理论限制为 1GB存储。

  2. 但实际限制要低得多 - 处理会占用大量内存,对于长值,可用内存可能会出现问题。也可能存在性能问题——jsonb 是不可变的原子值——每次更新都会生成完整的新值,每次读取都必须读取完整的值。如果您的值小于 200MB,那么您通常不会遇到问题。

  3. 数据库服务器不应大量使用交换。这意味着实际限制取决于事件查询(事件用户)的数量。 max_connection 越高意味着大值的实际限制越低。

typlen == -1 的类型是 varlena 类型。您可以在 documentation 中找到最大尺寸.但是,这又是理论上的限制。实际限制较低,取决于 Postgres 的可用内存和存储对象的可能结构(属性)。你必须测试它。没有任何其他方法。

关于PostgreSQL 数据类型 jsonb 最大存储范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56454195/

相关文章:

c - 解释这个 gcc 函数的类型化行为

javascript - 使用时间查询行 - postgresql

postgresql - 如何通过终端在psql中保存查询

laravel - 通过Mac OS X连接到存在于Docker中的远程数据库

ruby-on-rails - Rails 5 - PostgreSQL 删除列和索引已被破坏的迁移

postgresql - 如何使用 "pg_dump"实用程序转储数据时排除表分区

postgresql - 主键的 UUID 或 SEQUENCE?

c - 为什么 C 标准 bool 不是 bool_t?

postgresql - 是否可以创建一个具有一定间隔的枚举类型?

python - 使用 SQLAlchemy 批量更新