You need to enable JavaScript to run this app.
文档中心
云数据库 PostgreSQL 版

云数据库 PostgreSQL 版

复制全文
下载 pdf
插件
系统读写信息统计(pg_stat_kcache)
复制全文
下载 pdf
系统读写信息统计(pg_stat_kcache)
pg_stat_kcache 是一款对 PostgreSQL 在运行过程中对文件系统读写信息进行统计的插件。​
实现原理​
pg_stat_kcache 是在查询执行前后,分别调用 Linux 接口 getrusage 获取进程相关资源信息,最后计算前后差值,即为当前查询所使用的资源信息。​
说明​
  • pg_stat_kcache 相关函数和视图定义,依赖于 pg_stat_statements 插件。在使用前,需要更改 shared_preload_libraries 参数,将 pg_stat_statements 和 pg_stat_kcache 加入到该参数的运行值。​
  • 修改 shared_preload_libraries 参数需要重启实例。请参考修改参数,谨慎操作。​
核心对象​
pg_stat_kcache 的核心对象如下表所示。​
​
对象类型​
对象名称​
对象描述​
使用示例​
GUC 参数​
pg_stat_kcache.linux_hz​
  • 整数类型,最小值 -1,最大值 INT_MAX,默认值 -1。​
  • 采样错误的补偿值,见: linux CONFIG_HZ。​
​
set pg_stat_kcache.linux_hz = -1;​
​
​
pg_stat_kcache.track​
枚举类型,取值范围为:[none, top, all],默认值为 top,表示控制追踪哪些 SQL 语句,取值含义如下:​
  • top: 追踪最顶层的 SQL 语句,通常由客户端直接发出的语句。​
  • all: 追踪顶层语句 和 嵌套语句,比如在 Function 中执行的嵌套 SQL 语句。​
  • none:关闭追踪。​
​
set pg_stat_kcache.track = all;​
​
​
pg_stat_kcache.track_planning​
  • bool 类型,默认值为 false。​
  • PostgreSQL 13 以及以上版本生效。​
  • 表示是否追踪查询优化期间的资源使用情况。​
​
set pg_stat_kcache.track_planning = true;​
​
函数​
pg_stat_kcache()​
返回共享内存中记录的追踪信息。​
可以直接调用,但通常通过 pg_stat_kcache_detail 视图调用。​
​
select * from pg_stat_kcache();​
select pg_stat_kcache();​
​
​
pg_stat_kcache_reset()​
清空记录的追踪信息。​
​
select pg_stat_kcache_reset();​
​
视图​
pg_stat_kcache_detail​
将 pg_stat_kcache() 、pg_stat_statements、pg_database、pg_roles 进行 join 查询的结果。​
​
select * from pg_stat_kcache_detail;​
​
​
pg_stat_kcache​
将 pg_stat_kcache_detail 视图按照 datname 维度进行 sum 聚集。​
​
Select * from pg_stat_kcache;​
​
​
函数和视图列名含义​
​
列名称​
类型​
描述​
datname​
name​
数据库名称。​
plan_user_time​
double precision​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化的用户 CPU 耗时,单位为秒,或者毫秒。PostgreSQL 13 及以上版本生效。​
plan_system_time​
double precision​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化的系统 CPU 耗时,单位为秒,或者毫秒。PostgreSQL 13 及以上版本生效。​
plan_minflts​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时的页面回收(soft page faults)数目。PostgreSQL 13 及以上版本生效。​
plan_majflts​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时的页面回收(hard page faults)数目。PostgreSQL 13 及以上版本生效。​
plan_nswaps​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时的 swap 数目。PostgreSQL 13 及以上版本生效。​
plan_reads​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,通过文件系统发起的 read 字节数。PostgreSQL 13 以及以上版本生效。​
plan_reads_blks​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,通过文件系统发起 read 的 8K 块数。PostgreSQL 13 以及以上版本生效。​
plan_writes​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,通过文件系统发起的 write 字节数。PostgreSQL 13 以及以上版本生效。​
plan_writes_blks​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,通过文件系统发起 write 的 8K 块数。PostgreSQL 13 以及以上版本生效。​
plan_msgsnds​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,发送的 IPC 消息数。PostgreSQL 13 以及以上版本生效。​
plan_msgrcvs​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,接收的 IPC 消息数。PostgreSQL 13 以及以上版本生效。​
plan_nsignals​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,接收的 信号数。PostgreSQL 13 以及以上版本生效。​
plan_nvcsws​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,发生的主动上下文切换数。PostgreSQL 13 以及以上版本生效。​
plan_nivcsws​
bigint​
pg_stat_kcache.track_planning 开启生效,表示对 SQL 进行查询优化时,发生的被动上下文切换数。PostgreSQL 13 以及以上版本生效。​
exec_user_time​
double precision​
表示 SQL 执行阶段的用户 CPU 耗时,单位为秒,或者毫秒。​
exec_system_time​
double precision​
表示 SQL 执行阶段的系统 CPU 耗时,单位为秒,或者毫秒。​
exec_minflts​
bigint​
表示 SQL 执行阶段的页面回收(soft page faults)数目。​
exec_majflts​
bigint​
表示 SQL 执行阶段的页面回收(hard page faults)数目。​
exec_nswaps​
bigint​
表示 SQL 执行阶段的 swap 数目。​
exec_reads​
bigint​
表示 SQL 执行阶段,通过文件系统发起的 read 字节数。​
exec_reads_blks​
bigint​
表示 SQL 执行阶段,通过文件系统发起 read 的 8K 块数。​
exec_writes​
bigint​
表示 SQL 执行阶段,通过文件系统发起的 write 字节数。​
exec_writes_blks​
bigint​
表示 SQL 执行阶段,通过文件系统发起 write 的 8K 块数。​
exec_msgsnds​
bigint​
表示 SQL 执行阶段,发送的 IPC 消息数。​
exec_msgrcvs​
bigint​
表示 SQL 执行阶段,接收的 IPC 消息数。​
exec_nsignals​
bigint​
表示 SQL 执行阶段,接收的信号数。​
exec_nvcsws​
bigint​
表示 SQL 执行阶段,发生的主动上下文切换数。​
exec_nivcsws​
bigint​
表示 SQL 执行阶段,发生的被动上下文切换数。​
​
​
安装插件​
使用以下命令即可安装插件。​
说明​
需使用高权限账号创建插件。​
​
create extension pg_stat_statements ;​
create extension pg_stat_kcache ;​
​
插件的使用​
前提条件​
  • 已完成 GUC 参数配置。​
  • 已将 pg_stat_statements和pg_stat_kcache 加入 shared_preload_libraries 列表中。​
  • 已经安装插件。​
  • 已导入数据。​
使用插件​
  1. 开启读写,并查询资源使用情况。​
  • ​
    sysbench --test=./tests/include/oltp_legacy/oltp.lua --db-driver=pgsql --pgsql-db=sysbench --pgsql-user=root --pgsql-password=Bd2021_bd --pgsql-port=5432 --pgsql-host=10.249.184.214 --oltp-tables-count=10 --oltp-table-size=1000000 --max-time=120 --max-requests=0 --num-threads=50 --report-interval=3 --forced-shutdown=1 run​
    ​
  1. 查询资源使用情况。​
  • ​
    select * from pg_stat_kcache_detail;​
    select * from pg_stat_kcache;​
    select pg_stat_kcache_reset();​
    ​
​
最近更新时间:2026.09.22 18:12:13
这个页面对您有帮助吗?
有用
有用
无用
无用