假设我有一个带有一些HStore列的Postgres数据库。这对性能有什么影响?特别是如果大多数查询在不检查HStore属性的情况下运行,那么存在HStore属性会显著减慢它的速度吗?
在存储方面,hstore
就像 bytea
或 text
这样的另一个可变长度字段。它可以进行TOAST
外部存储,压缩等操作。
当您不访问 hstore
列时,唯一需要考虑的就是它给每行添加的额外大小,从而使扫描变慢。这通过 PostgreSQL 在 TOAST 表中存储更大的 hstore
字段来缓解。
与 text
或其他可变长度列一样,如果您更新
行,则由于PostgreSQL的写时复制并发控制,必须复制大列的内容。但是,如果该列未在写入中修改且已被存储在外部,PostgreSQL通常可以避免复制它,而只需复制对其的引用。
一般情况下,如果未经过重度使用,拥有 hstore 列对性能不会产生太大影响。