重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 209|回复: 0
打印 上一主题 下一主题

使用 pgfincore 插件把表添加到操作系统缓存

[复制链接]
跳转到指定楼层
楼主
发表于 2024-10-7 13:28:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pgfincore,把数据永久加载到OS的CACHE中(不是数据库的buffer).在内存足够的情况下,被加载的数据不会被移出CACHE。

1. 源码安装
    pgfincore下载地址:https://github.com/klando/pgfincore

    make
    make install

2.创建扩展
    create extension pgfincore;

    select * from pg_extension;

3.看一下有哪些与此有关的函数
select proname,prosrc
   from pg_catalog.pg_namespace n join pg_catalog.pg_proc p on pronamespace=n.oid
   where nspname='public';

           proname           |                                 prosrc                                 
-----------------------------+------------------------------------------------------------------------
pg_buffercache_pages        | pg_buffercache_pages
pg_buffercache_summary      | pg_buffercache_summary
pg_buffercache_usage_counts | pg_buffercache_usage_counts
pgsysconf                   | pgsysconf
pgsysconf_pretty            |                                                                       +
                             | select pg_size_pretty(os_page_size)                  as os_page_size, +
                             |        pg_size_pretty(os_pages_free * os_page_size)  as os_pages_free,+
                             |        pg_size_pretty(os_total_pages * os_page_size) as os_total_pages+
                             | from pgsysconf()
pgfadvise                   | pgfadvise
pgfadvise_willneed          | SELECT pgfadvise($1, 'main', 10)
pgfadvise_dontneed          | SELECT pgfadvise($1, 'main', 20)
pgfadvise_normal            | SELECT pgfadvise($1, 'main', 30)
pgfadvise_sequential        | SELECT pgfadvise($1, 'main', 40)
pgfadvise_random            | SELECT pgfadvise($1, 'main', 50)
pgfadvise_loader            | pgfadvise_loader
pgfadvise_loader            | SELECT pgfadvise_loader($1, 'main', $2, $3, $4, $5)
pgfincore                   | pgfincore
pgfincore                   | SELECT * from pgfincore($1, 'main', $2)
pgfincore                   | SELECT * from pgfincore($1, 'main', false)
pgfincore_drawer            | pgfincore_drawer
pg_prewarm                  | pg_prewarm
autoprewarm_start_worker    | autoprewarm_start_worker
autoprewarm_dump_now        | autoprewarm_dump_now
(20 rows)

4. pgfincore的使用
    4.1 把某个表添加到内存中
    select * from pgfadvise_willneed('表名');
    比如把 ORDERS表添加到缓存

    select * from pgfadvise_willneed('orders');

    4.2 在内存中删除
    select * from pgfadvise_dontneed('表名');
     比如把ORDERS表从内存中删除
     select * from pgfadvise_dontneed('orders');


    4.3 检查是否缓存
   查看状态
   select relname,split_part(pgfincore(c.relname::text)::text,','::text,5) as "in_os_cache"
   from pg_class c
where relname like 'orders';



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-10-30 11:22 , Processed in 0.093620 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表