1. ホーム
  2. postgresql

[解決済み] Postgresのキャッシュ/バッファの参照とクリア?

2023-02-04 04:11:30

質問

Postgresのクエリを実行すると、30秒かかることがあります。その後、すぐに同じクエリを実行すると、2秒かかります。Postgres にはある種のキャッシュがあるようです。そのキャッシュが何を保持しているのか、どうにかして見ることはできないでしょうか?チューニングのために、すべてのキャッシュを強制的にクリアすることはできますか?

私は基本的に、次の SQL Server コマンドの Postgres バージョンを探しています。

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

しかし、そのバッファに実際に何が含まれているかを見る方法も知りたいのです。

どのように解決するのですか?

PostgreSQLのバッファキャッシュに何があるかは、pg_buffercacheモジュールを使って見ることができます。 私は、"というプレゼンテーションをしたことがあります。 PostgreSQL バッファキャッシュの内部 というプレゼンテーションで、あなたが見ているものについて説明しています。

いくつかのシステムでは、オペレーティングシステムのキャッシュを見ることもできます。

キャッシュを簡単にクリアする方法はありません。 Linuxでは、データベースサーバを停止して drop_caches を使ってOSのキャッシュをクリアすることができます。ただし、最初にsyncを実行するようにという警告に注意してください。