1

多数のレコードを含むテーブルがありますが、一度に「アクティブ」になるのはそれらの一部のみであり、Web アプリはそれらを参照するだけで済みます。新しい (アクティブな) レコードを追加し、古いレコードを再アクティブ化する可能性がある更新プロセスを毎晩実行しています。

postgres は、アクティブなレコードをキャッシュする必要があることを理解できますか? そうでない場合は、アクティブなレコードを新しいテーブルに移動して、それを支援する必要がありますか?または、「ヒント」を与える他の方法はありますか?

UPDATE - アクティブなレコードは、end_date という日時フィールドに NULL 値を持つことで示されます

ありがとう

4

2 に答える 2

2

オペレーティング システムは、アクティブで最近使用されたディスク ブロックをキャッシュします。PostgreSQL は主にオペレーティング システムのディスク キャッシュに依存しています。ただし、それ自体shared_buffersもホットページをキャッシュします。

これは、「本来よりも遅いと思われるこれらのクエリがある」という非常に回りくどい方法のように思えます。http://wiki.postgresql.org/wiki/Slow_Query_Questionshttps://stackoverflow.com/tags/postgresql-performance/infoを読むことを検討してください

于 2013-05-31T15:54:31.950 に答える
0

「アクティブなレコード」が何を意味するのかわかりませんが、私が見逃しているpostgresの用語かもしれません。単に「アクティブ」という名前の行を意味する場合は、それにインデックスを置きます。そうすれば、postgres は行単位の検索を行わずに直接アクセスできるため、ある意味ではキャッシュのようになります (行を変更するたびに再構築されます)。

于 2013-05-31T15:54:22.853 に答える