Postgres HStore 对性能的影响是什么?

What is Postgres HStore's effect on performance?

假设我有一个带有一些 HStore 列的 Postgres 数据库。它对性能有什么影响?特别是如果大多数查询 运行 没有检查 HStore 属性,那么 HStore 属性是否会显着降低速度?

在存储术语中,hstore 只是另一个可变长度字段,如 byteatextTOASTable 用于离线存储,可压缩等

当您不访问 hstore 列时,唯一的问题是它为每行添加的额外大小,从而使扫描速度变慢。 PostgreSQL 在 TOAST table.

中离线存储更大的 hstore 字段可以缓解这种情况

text 或其他可变长度列一样,如果您 update 由于 PostgreSQL's copy-on-write concurrency control 而必须复制大列内容的行。然而,如果列在写入时没有被修改,并且它被存储在离线状态,PostgreSQL 通常可以不复制它,而只是复制对它的引用。

如果不经常使用 hstore 列,通常不会对性能产生太大影响。