【PostgreSQL将数据加载到buffer cache中操作方法】
我们都知道数据在缓存中访问远比在磁盘中访问速度要快 , 那么我们怎么在pg中将指定的数据加载到缓存中呢 , 这有点类似于Oracle的in-memory 。
当然要注意并不是把数据加载到内存中就一定是好的 , 因为相较于磁盘 , 内存总是有限的 , 所以一帮我们只是在特殊场合下将需要的数据加载到内存中来加快访问的速度 。
我们可以使用pg_prewarm插件来将指定的表加载到OS Buffer或者pg shared buffer中 。
安装:
bill=# create extension pg_prewarm ;
CREATE EXTENSION
性能测试:
构建测试表t1 , t2 , 分别插入1000W条测试数据
bill=# create table t1(id int,info text);
CREATE TABLE
bill=# create table t2(id int,info text);
CREATE TABLE
bill=# insert into t1 select generate_series(1,10000000),md5(random()::text);
INSERT 0 10000000
bill=# insert into t2 select generate_series(1,10000000),md5(random()::text);
INSERT 0 10000000
测试前先清空shared_buffer , 可以使用下面sql查看shared_buffer使用情况:
安装pg_buffercache插件:
bill=# create extension pg_buffercache;
CREATE EXTENSION
查询shared_buffer使用情况:
SELECT
c.relname,
count(*) AS buffers
FROM pg_buffercache b
INNER JOIN pg_class c
ON b.relfilenode = pg_relation_filenode(c.oid)
AND b.reldatabase IN (0, (SELECT oid FROM pg_database
WHERE datname = current_database()))
GROUP BY c.relname
ORDER BY 2 DESC;
relname | buffers
—————————————–+———
pg_attribute | 36
pg_proc | 27
pg_class | 15
pg_operator | 14
pg_depend_reference_index | 13
pg_depend | 11
pg_attribute_relid_attnum_index | 10
pg_proc_proname_args_nsp_index | 9
……
可以看到t1和t2表均不在shared_buffer中 , 我们来手动将t2表加载到shared_buffer中 。
bill=# SELECT pg_prewarm(‘t2’);
pg_prewarm
- 干细胞治疗糖尿病的依据是什么 干细胞2030年将治愈糖尿病
- 中医体检数据显示阳虚体质排榜首 阳虚长斑怎么调理好
- 女子回应穿防护服|女子回应穿防护服和3个阳康打麻将是怎么回事 日常防护应该如何做
- 请推荐最好的医院或医生 高血压即将被彻底治愈
- 在国外听说过拉卡维lacannavie 国内即将上市的帕金森新药
- 是否预示着癌症将被彻底攻克 美国停止cart免疫疗法
- 女子将布洛芬藏茶包|女子将布洛芬藏茶包里压最底层寄出是真的吗 布洛芬为什么如此抢手
- 俄罗斯松果蜂蜜怎么吃 什么蜂蜜适合做菜
- 四维彩超的数据怎么看 四维彩超检查什么的呢
- 孕妇能将红萝卜和虾一起吃吗 虾和胡萝卜能一起吃吗
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
