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

时间:2015-03-15 17:41:20

标签: performance postgresql hstore

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

1 个答案:

答案 0 :(得分:5)

在存储空间中,hstore只是另一个可变长度字段,如byteatext。它是TOASTable用于外线存储,可压缩等等。

当您未访问hstore列时,唯一需要考虑的是它为每行添加的额外大小,使扫描速度变慢。这可以通过PostgreSQL在TOAST表中存储更大的hstore字段来缓解。

text或其他可变长度列一样,如果您update行必须复制大列的内容,因为PostgreSQL's copy-on-write concurrency control。但是,如果在写入中没有修改列并且它已经存储在线外,那么PostgreSQL通常可以避免复制它,而只是复制对它的引用。

如果没有大量使用,通常使用hstore列对性能会产生很大影响。