查看缓冲区缓存的内容:
create extension pg_buffercache;

select c.relname, count(1) as buffers from pg_class c 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;
-[ RECORD 1 ]------------------------------
relname | pg_depend_reference_index
buffers | 12
-[ RECORD 2 ]------------------------------
relname | pg_depend
buffers | 10
-[ RECORD 3 ]------------------------------
relname | pg_rewrite
buffers | 6
-[ RECORD 4 ]------------------------------
relname | pg_extension
buffers | 5
-[ RECORD 5 ]------------------------------
relname | pg_init_privs
buffers | 5
-[ RECORD 6 ]------------------------------
relname | pg_statistic
buffers | 5
-[ RECORD 7 ]------------------------------
relname | pg_amop
buffers | 5
-[ RECORD 8 ]------------------------------
relname | pg_operator_oprname_l_r_n_index
buffers | 5
-[ RECORD 9 ]------------------------------
relname | pg_depend_depender_index
buffers | 5

缓存的都是数据字典视图。

排除掉此类视图 :

select c.relname, count(1) as buffers from pg_class c join pg_buffercache b on b.relfilenode=c.relfilenode inner join pg_database d on (b.reldatabase=d.oid and d.datname=current_database()) where c.relname not like 'pg%' group by c.relname order by 2 desc;

 relname | buffers
---------+---------
(0 rows)

创建自己的表,然后插入记录:
create table test(id numeric,name text);

insert into test values(1,'dxmy');
test=# select * from test;
 id | name
----+------
  1 | dxmy
(1 row)

然后再查询:
test=# select c.relname,b.isdirty, count(1) as buffers from pg_class c join pg_buffercache b on b.relfilenode=c.relfilenode inner join pg_database d on (b.reldatabase=d.oid and d.datname=current_database()) where c.relname not like 'pg%' group by c.relname,b.isdirty order by 2 desc;
 relname | isdirty | buffers
---------+---------+---------
 test    | t       |       1
(1 row)

发现我们新建的表及插入的数据缓存了:
其中,isdirty是f,意思就是不脏,来修改一下:
update test set id=2;
test=# update test set id=2;
UPDATE 1

再查一次:
test=# select c.relname,b.isdirty, count(1) as buffers from pg_class c join pg_buffercache b on b.relfilenode=c.relfilenode inner join pg_database d on (b.reldatabase=d.oid and d.datname=current_database()) where c.relname not like 'pg%' group by c.relname,b.isdirty order by 2 desc;
 relname | isdirty | buffers
---------+---------+---------
 test    | t       |       1
(1 row)

isdirty变为了t,说明是脏数据了。
来个检查点:
test=# checkpoint;
CHECKPOINT

再查一次:
test=# select c.relname,b.isdirty, count(1) as buffers from pg_class c join pg_buffercache b on b.relfilenode=c.relfilenode inner join pg_database d on (b.reldatabase=d.oid and d.datname=current_database()) where c.relname not like 'pg%' group by c.relname,b.isdirty order by 2 desc;
 relname | isdirty | buffers
---------+---------+---------
 test    | f       |       1
(1 row)

又不脏了。

有兴趣可以自己做实验玩。

pg_buffercache的更多相关文章

  1. 使用pg_buffercache查看缓存区缓存

    PG提供了一个扩展pg_buffercache来查看缓存区的内容. create database test; CREATE DATABASE create extension pg_bufferca ...

  2. postgres安装pg_buffercache扩展

    1.查看是否安装了pg_buffercache postgres=# \dx List of installed extensions Name | Version | Schema | Descri ...

  3. ERROR: relation "pg_buffercache" does not exist

    创建pg_buffercache后,查询时报错: postgres=# create extension pg_buffercache; postgres=# select * from pg_buf ...

  4. PostgreSQL 磁盘使用大小监控

    表大小信息 postgres=# SELECT *, pg_size_pretty(total_bytes) AS totalpostgres-# , pg_size_pretty(index_byt ...

  5. pg 资料大全1

    https://github.com/ty4z2008/Qix/blob/master/pg.md?from=timeline&isappinstalled=0 PostgreSQL(数据库) ...

  6. 在CentOS上编译安装PostgreSQL

    http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...

  7. 深入理解Postgres中的cache

    众所周知,缓存是提高数据库性能的一个重要手段.本文着重讲一讲PostgreSQL中的缓存相关的东西.当然万变不离其宗,原理都是共同的,理解了这些,你也很容易把它运用到其它数据库中. What is a ...

  8. # postgresql-shared_buffers

    关于shared_buffers 什么是shred_buffer,我们为什么需要shared_buffers? 1.在数据库系统中,我们主要关注磁盘io,大多数oltp工作负载都是随机io,因此从磁盘 ...

  9. PostgreSQL 扩展开发基础教程

    搭建基础结构 安装扩展 sudo apt-get install postgresql-contribcreatedb stupsql stucreate extension pg_buffercac ...

随机推荐

  1. HTML,CSS,Javascript,JQuery

    HTML 一套浏览器认识的规则 标签 1.<head></head> 2.<title></title> 3.<body></body ...

  2. 用Tchromium替代webbrowser提交网页表单有关问题

    用Tchromium替代webbrowser提交网页表单有关问题   提交表单时,使用js脚本,然后用 chrm.browser.Frame['ff'].ExecuteJavaScript 提交就可以 ...

  3. 解释一下python中的逻辑运算符

    python中有三个逻辑运算符:and.or.not print(False and True)#False print(7<7 or True)#True print(not 2==2)#Fa ...

  4. 微信小程序 canvas 生成随机验证码

    转载:https://blog.csdn.net/qq_16646819/article/details/81020245?utm_source=blogxgwz0 js // pages/bind/ ...

  5. sortable实现拖拽功能

    使用sortable这个强力插件就很容易实现拖拽功能,它是目前比较牛逼的拖拽插件,无需jquery,就可以全面支持pc和移动,参考以下github文档就有很详细的说明,也给了很多 demo,插件就用我 ...

  6. C# 加法运算内部执行过程

    1,转换成32为或者64为的数字 2,进行运算 3,算出结果后为int32或者int64,进行类型转化得到自己需要的类型

  7. poj2993

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; stru ...

  8. uvm学习杂记

    一个类,只定义了而没有实例化,是没有任何意义的,但也有特殊情况,对于一个静态类,即其成员变量都是静态的,不实例化也可以正常使用: 类要想和DUT通信,不能在类里定义接口,会报错,只能在类里定义虚拟接口 ...

  9. 在Windows Server 2008 R2上打开ping的方法

    默认安装完Windows Server 2008 R2后,从外面ping服务器的地址是ping不通的,原因是服务器防火墙默认关闭了ICMP的回显请求.需要按照如下方法打开: 在服务器管理器中选择“配置 ...

  10. mysql 进阶查询(学习笔记)

    学习笔记,来源:实验楼 ,链接: https://www.shiyanlou.com/courses/9   一.日期计算: 1.要想确定每个宠物有多大,可以使用函数TIMESTAMPDIFF()计算 ...