10

hstore 列に GIN または GiST インデックスを使用するかどうかを決定する必要があります。

Postgresのドキュメントには次のように記載されています。

  • GIN インデックスのルックアップは、GiST よりも約 3 倍高速です
  • GIN インデックスの構築には、GiST よりも約 3 倍の時間がかかります
  • GIN インデックスは、更新が GiST よりも約 10 倍遅い
  • GIN インデックスは GiST の 2 倍から 3 倍大きい

私の解釈では、大量のクエリが必要な場合は GIN を使用し、大量の更新が必要な場合は GiST を使用します。

このテストでは、前述の GiST に対する GIN の 3 つの欠点がすべて確認されています。ただし、Postgres のドキュメントで提案されている以外に、GIN の GiST に対する利点 (ルックアップの高速化) は非常に小さいです。スライド 53 は、Postgres のドキュメントで提案されている 200% から 300% とは対照的に、テストでは GIN が 2% から 3% しか速かったことを示しています。

どちらの情報源がより信頼性が高く、その理由は?

4

1 に答える 1

5

文書には、状況が「一般的に」どのようなものであるかが記載されています。

ただし、「一般的に」PostgreSQLを実行しているのではなく、特定の使用パターンで特定のハードウェアで実行しています。

だから - あなたがとても気にするなら、あなたはそれを自分でテストしたいと思うでしょう. GiST インデックスは常にその状態を再チェックする必要があります。ただし、実行するクエリが最終的にさらにチェックを行う場合は、GIN インデックスが勝てない可能性があります。また、キャッシュの使用などに関する通常の問題もすべてあります。

私の使用法では、更新率が中程度の小規模なデータベースでは、GiST で十分満足しています。GIN を使用すると (クエリ全体で) 速度が 50% 向上しましたが、インデックス作成が遅くなったほどではありません。巨大なアーカイブ サーバーを構築していた場合は、状況が異なる可能性があります。

于 2013-12-06T09:21:39.173 に答える