Postgresql 读取pg_缓存输出

Postgresql 读取pg_缓存输出,postgresql,Postgresql,我正在使用postgres-9.3(在cenos6.9中)并试图理解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_d

我正在使用postgres-9.3(在cenos6.9中)并试图理解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缓冲区的表。这是我在数据(主表)中插入了大量数据,然后选择并更新了数据

我还运行了“Selectfrompg_buffercache where is dirty”,其中显示了大约50个条目

我应该如何解释这些数字?缓冲区计数是否对应于我创建扩展后的所有事务或最近的事务。如何确定我的特定操作是否使用了适当数量的缓冲区

这是我的设置:

 # show shared_buffers;
    shared_buffers 
  ----------------
     1GB

 # show work_mem;
  work_mem
 ----------
   128kB
 # show maintenance_work_mem;
   maintenance_work_mem 
  ----------------------
   64GB
和当前的空闲内存(我在这台机器上有64GM内存)。我有一个混合工作负载的机器,有周期性的插入和大量的选择。目前,数据库和表很小,但将增长到至少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表。我应该定期运行此查询吗?我是否需要相应地更改我的共享缓冲区

我做了一些阅读和测试,这就是我发现的。在此处找到用户查询:

下面是一些给其他有类似问题的人的注释

  • 您需要为每个数据库创建扩展。所以“\c db_name”然后“创建扩展pg_buffercache”

  • 运行查询时也是如此

  • 重新启动数据库将清除查询

  •   $ free -m
             total       used      free     shared    buffers     cached
     Mem:   64375      33483      30891        954         15      15731
     /+ buffers/cache: 18097      46278
    Swap:   32767         38      32729