1

クエリを実行したときに、データベースの内容がシステムの RAM にあるかどうかを知りたいです。データセットは約 4.1 GB で、私のマシンには 8 GB の RAM があります。SELECTまたはUPDATEクエリを実行するたびにディスクから読み取りますか?

4

3 に答える 3

2

他の人が提案したように IO アクティビティを監視する以外に、クエリを実行して PostgreSQL の統計追跡を利用することもできます。

次のクエリは、キャッシュ ヒット率を示します。キャッシュのみをヒットする場合、ヒット率は .99 以上の範囲のどこかである必要があります。ディスク読み取りを頻繁に行う場合、ヒット率は低くなります。

SELECT 
  sum(heap_blks_read) as heap_read,
  sum(heap_blks_hit)  as heap_hit,
  sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as ratio
FROM 
  pg_statio_user_tables;

このクエリとその他のパフォーマンス クエリは、ここにあります。

于 2013-10-08T21:00:00.883 に答える
0

すべてのシステムで IO アクティビティを追跡できます。したがって、システム監視ツールを使用できます。たとえば、Linux 用の iotop があります。

于 2013-10-08T19:01:21.633 に答える
0

そのクエリがシステムでアクティブに実行されている唯一のものである場合は、システム ツール (vmstat、sar) を使用して、実行時に IO にスパイクがあるかどうかを確認します。他にも多くのことが行われている場合、ディスクから実際に読み取られたデータと、OS のファイル システム キャッシュから読み取られたデータを簡単に区別する方法がないため、何が必要かを判断するのは非常に困難です。track_io_timing をオンにして、結果の時間が RAM からのデータと一致しているかどうかを確認できます。

于 2013-10-08T20:32:19.073 に答える