Postgre JSON 类型针对大型 JSON 文档优化的效果如何?在 JSON 对象大小为数 MB 且太大而无法有效加载的情况下,我特别关注部分检索(例如,获取 JSON 数组的最后 N 个项目或在 JSON 字典中查找一个特定项目的成本)在全。
背景:我正在使用一个数据集,其中每条记录都有 10,000 条注释。我不需要对这些注释进行完全索引,但我是否需要快速插入记录,因此我正在考虑将它们存储在 JSON 字段中,而不是在映射表中创建数千个额外的行。
这与 PostgreSQL 9.3 有关。
在 PostgreSQL 9.3 中,大型 json 文档的性能会相当差。必须解析整个文档才能访问字段、索引数组等。它作为简单的文本表示形式存储在磁盘上,即 json 文本。
PostgreSQL 9.4 可能会改变这一点,支持磁盘上的 jsonb 存储。它仍然需要从磁盘读取整个 json 对象才能访问它的任何部分,但它不会有您在 9.3 中看到的相同类型的解析开销。它还将获得
hstore
.在 9.3 中,我强烈怀疑
hstore
以紧凑的二进制表示形式存储在磁盘上并支持各种索引功能的 .可能会有所帮助:在 sql 语句中,我在有 json 字段的地方添加了这个“演员”:
map_file 表中“数据”的数据类型是:json