【问题标题】:Postgres hstore: GIN vs GiST index performancePostgres hstore:GIN 与 GiST 索引性能
【发布时间】:2013-12-23 09:26:01
【问题描述】:

我必须决定是对 hstore 列使用 GIN 还是 GiST 索引。

Postgres docs 状态:

  • GIN 索引查找比 GiST 快大约三倍
  • GIN 索引的构建时间大约是 GiST 的三倍
  • GIN 索引的更新速度比 GiST 慢十倍
  • GIN 索引比 GiST 大两到三倍

按我的理解,查询多就用GIN,更新多就用GiST。

test 中,确认了上述 GIN 相对于 GiST 的所有三个缺点。然而,除了 Postgres 文档中的建议之外,GIN 相对于 GiST(查找速度更快)的优势非常小。幻灯片 53 显示,在测试中,GIN 仅比 Postgres 文档中建议的 200% 到 300% 快 2% 到 3%。

哪种信息来源更可靠,为什么?

【问题讨论】:

  • 我会更进一步说“使用 GiST,除非你有本质上是静态的数据”。部分性能差异可能与您拥有的 RAM 有关。如果整个索引(大于 GiST)不适合 RAM,GIN 索引的好处就会消失。

标签: postgresql indexing gwt-gin gist-index


【解决方案1】:

文件说明了“一般情况”的情况。

但是,您不是“一般”运行 PostgreSQL,而是在具有特定使用模式的特定硬件上运行它。

所以 - 如果你很在意,那么你会想要自己测试一下。 GiST 索引将始终需要重新检查其状况。但是,如果您运行的查询最终还是要进行进一步检查,则 GIN 索引可能不会在那里获胜。还有关于缓存使用等的所有常见问题。

对于我的使用,在更新率适中的小型数据库上,我对 GiST 感到非常满意。我已经看到 GIN 的速度提高了 50%(在整个查询中),但是较慢的索引不值得。如果我正在构建一个巨大的存档服务器,它可能会有所不同。

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多