私はpostgres-9.3(CenOS 6.9)を使用しており、pg_buffercacheテーブルの出力を理解しようとしています。pg_buffercacheの出力を読む
私はこの走っ:
SELECT c.relname,count(*) AS buffers FROM pg_class c INNER JOIN
pg_buffercache b ON b.relfilenode=c.relfilenode INNER JOIN
pg_database d ON (b.reldatabase=d.oid AND
d.datname=current_database()) GROUP BY c.relname
ORDER BY 2 DESC LIMIT 5;
をし、以下の出力が6594個のバッファを使用してテーブルのいずれかを示しました。これは、data_mainテーブルでINSERTに続いてSELECTとUPDATEが行われたときです。
relname | buffers
------------------+---------
data_main | 6594
objt_main | 1897
objt_access | 788
idx_data_mai | 736
私はまた、約50のエントリを示した "汚いですpg_buffercache SELECT * FROM" 走りました。
これらの数字はどのように解釈する必要がありますか?私が拡張機能を作成してから、または最近のものを作成して以来、バッファカウントはすべてのトランザクションに対応していますか?適切な量のバッファを使用して私の特定の操作を調べるにはどうすればよいですか?
# show shared_buffers;
shared_buffers
----------------
1GB
# show work_mem;
work_mem
----------
128kB
# show maintenance_work_mem;
maintenance_work_mem
----------------------
64GB
そして現在の空きMEM(私はこのマシンで64GMメモリを持っている):
は、ここに私の設定です。そして、私はINSERTのピリオドバーストとたくさんのSELECTSを持つ混在ワークロードマシンを持っています。現在、データベースとテーブルは小さくても、少なくとも200万行に拡大します。
$ free -m
total used free shared buffers cached
Mem: 64375 33483 30891 954 15 15731
/+ buffers/cache: 18097 46278
Swap: 32767 38 32729
基本的に、このpg_buffercacheテーブルを正しく使用する方法を理解しようとしています。このクエリを定期的に実行する必要がありますか?そして私はそれに応じてshared_buffersを変更する必要がありますか?