我正在运行 PostgreSQL 版本 9.6.13。我有两个问题
- 数据类型“jsonb”和“text”的最大存储范围/大小是多少
- 如何找到其他字段的最大存储范围/大小?
我查看了 PostgreSQL 提供的“pg_type”目录表。 对于“文本”和“jsonb”数据类型,字段 typlen=-1 这意味着它们是可变长度类型,但我无法找到两者的最大存储大小。
最佳答案
有多个限制:
TOAST 指定的理论限制为 1GB存储。
但实际限制要低得多 - 处理会占用大量内存,对于长值,可用内存可能会出现问题。也可能存在性能问题——jsonb 是不可变的原子值——每次更新都会生成完整的新值,每次读取都必须读取完整的值。如果您的值小于 200MB,那么您通常不会遇到问题。
数据库服务器不应大量使用交换。这意味着实际限制取决于事件查询(事件用户)的数量。 max_connection 越高意味着大值的实际限制越低。
typlen == -1 的类型是 varlena 类型。您可以在 documentation 中找到最大尺寸.但是,这又是理论上的限制。实际限制较低,取决于 Postgres 的可用内存和存储对象的可能结构(属性)。你必须测试它。没有任何其他方法。
关于PostgreSQL 数据类型 jsonb 最大存储范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56454195/