使用pg_buffercache查看缓存区缓存
PG提供了一个扩展pg_buffercache来查看缓存区的内容。
create database test;
CREATE DATABASE create extension pg_buffercache ;
CREATE EXTENSION
创建个测试数据库test,并且添加扩展。
psql -d test test=# select distinct reldatabase from pg_buffercache ;
reldatabase
------------- 16394
13322
0
(4 rows)
在缓存区中找到两个数据库的内容,带0的记录表示缓存区未使用。
test=# \! oid2name
All databases:
Oid Database Name Tablespace
----------------------------------
13322 postgres pg_default
13321 template0 pg_default
1 template1 pg_default
16394 test pg_default
通过SQL更直观的来看一下:
select
c.relname,
count(*) 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; relname | buffers
-----------------------------------+---------
pg_operator | 14
pg_depend_reference_index | 12
pg_depend | 10
pg_rewrite | 6
pg_description | 6
pg_amop | 5
这些内容,都是数据字典视图。
test=# create table lsang(id serial,name varchar(20));
CREATE TABLE test=# insert into lsang(name) values('Michael');
INSERT 0 1 test=# select * from lsang;
id | name
----+---------
1 | Michael
(1 row) select
c.relname,
count(*) 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
--------------+---------
lsang | 1
lsang_id_seq | 1
(2 rows)
创建表并插入数据,我们通过pg_buffercache能够查询到buffers。
我们来看看数据缓存区是否为脏的。
select
c.relname,
b.isdirty
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%' ;
relname | isdirty
--------------+---------
lsang_id_seq | f
lsang | f
注意,isdirty标记的为f:
test=# update lsang set name = 'Michael.Sang';
UPDATE 1
再次查询结果:
relname | isdirty
--------------+---------
lsang_id_seq | f
lsang | t
(2 rows)
结果告诉我们,缓存区是脏的,我们可以强制设置个检查点:
test=# checkpoint ;
CHECKPOINT
重复上面查询:
relname | isdirty
--------------+---------
lsang_id_seq | f
lsang | f
(2 rows)
这样缓存区就不再是脏的了。
使用pg_buffercache查看缓存区缓存的更多相关文章
- 说说web缓存-强缓存、协商缓存
网上关于WEB缓存的文章很多,今天汇总一下. 为什么要用缓存 一般针对静态资源如CSS,JS,图片等使用缓存,原因如下: 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影 ...
- git --如何撤销已放入缓存区(Index区)的修改
修改或新增的文件通过 git add --all 命令全部加入缓存区(index区)之后,使用 git status 查看状态(git status -s 简单模式查看状态,第一列本地库和缓存区的差异 ...
- 【MINA】缓存区ByteBuffer和IOBuffer你要了解的常用知识
mina中IOBuffer是Nio中ByteBuffer的衍生类,主要是解决Bytebuffer的两个不足 1.没有提供足够灵活的get/putXXX方法 2.它容量固定,难以写入可变长度的数据 特点 ...
- csapp lab3 bufbomb 缓存区溢出攻击 《深入理解计算机系统》
这个实验主要是熟悉栈,和了解数据缓存区溢出的问题. 数据缓存区溢出:程序每次调用函数时,会把当前的eip指针保存在栈里面,作为被调用函数返回时的程序指针.在被调用程序里面,栈是向下增长的.所有局部变量 ...
- git如何删除已经 add 的文件 (如何撤销已放入缓存区文件的修改)
使用 git rm 命令即可,有两种选择, 一种是 git rm –cached “文件路径”,不删除物理文件,仅将该文件从缓存中删除: 一种是 git rm –f “文件路径”,不仅将该文件从缓存中 ...
- 一个fork的面试题——fork + 缓存区
update : 20140512 题目:请问下面的程序一共输出多少个“-”? #include <stdio.h> #include <sys/types.h> #inclu ...
- ArcGIS api for javascript——用缓存区查询地图
描述 本例展示了如何在另外一个任务里使用一个任务的结果.单击地图查看被单击的点的1公里范围内的缓存(如果需要可以修改这个默认的缓存距离).也可以看缓存区的这些点的人口普查街区信息.单击一个点查看更多的 ...
- sed原理及sed命令格式 ,缓存区,模式空间
4.1 Sed工作原理 sed是一个非交互式的流编辑器.所谓非交互式,是指使用sed只能在命令行下输入编辑命令来编辑文本,然后在屏幕上查看输出:而所谓流编辑器,是指sed每次只从 ...
- node(Buffer缓存区)
// 创建buffer类 var buf=new buffer(10); var buf=new buffer([10,20,30,40]); var buf=new buffer("www ...
随机推荐
- HTTP Error 500.19 - Internal Server Error
1.使用svn对项目进行管理 2.之前都是平安无事,忽然有一天报错:HTTP Error 500.19 - Internal Server Error,如图: 3.经过各种挣扎和求证,最后发现是项目. ...
- C Run-Time Error R6034问题的解决
1.问题描述 这两天一直在用vs2008编写一个小项目,需要在c++代码中通过命令行的方式调用cl.exe和link.exe,也就是给编译器cl和链接器link传递参数,然后编译链接生成可执行文件ex ...
- L2-2. 链表去重
L2-2. 链表去重 时间限制300 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的 ...
- android版火狐调试器
Remotely debugging Firefox for Android 使用火狐开发工具可以在桌面上进行远程代码的调试(FF26以上) 具体使用参考: https://developer.moz ...
- Javascript判断数据类型与真假值隐形转换研究
一.引言 我们在开发的时候经常要判断真和假,这是我们经常写的代码: if(a){ alert(1) } 那我们怎么判定a是真还是假呢?下面这些值的真假又是多少呢?它们的数据类型又是怎样的呢? &quo ...
- JavaScript系列----AJAX机制详解以及跨域通信
1.Ajax 1.1.Ajax简介 Ajax简介这一部分我们主要是谈一下ajax的起源,ajax是什么?因为这些是跟技术无关的.所以,大多细节都是一笔带过. Ajax的起源? Ajax一词源于2005 ...
- PHP--最常用--必背函数总结!php学习者收藏必备!
一.PHP系统函数 函数 功能 用法 var_dump() 打印变量结构信息,包括类型和值.数组将递归展开值 var_dump ( $arg1...); echo():是语法结构 输出一个或者多个字符 ...
- Java微信公众平台开发_07_JSSDK图片上传
一.本节要点 1.获取jsapi_ticket //2.获取getJsapiTicket的接口地址,有效期为7200秒 private static final String GET_JSAPITIC ...
- robotframework自动化系列:修改流程
在上一小节中,新增流程操作已经完成.那么接下来就是修改的流程操作了,对于一个页面的修改如何操作呢? 针对修改修改操作是在一个已经存在的账号直接修改还是新添加一个账号再修改呢?从用例设计健壮性出发,我们 ...
- .Net中的装箱和拆箱
装箱(boxing)和拆箱(unboxing)是.NET提出得新概念!.NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool ...