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 |
|
|
pg_stat_kcache.track | 枚举类型,取值范围为:[none, top, all],默认值为 top,表示控制追踪哪些 SQL 语句,取值含义如下:
|
| |
pg_stat_kcache.track_planning |
|
| |
函数 | pg_stat_kcache() | 返回共享内存中记录的追踪信息。 |
|
pg_stat_kcache_reset() | 清空记录的追踪信息。 |
| |
视图 | pg_stat_kcache_detail | 将 pg_stat_kcache() 、pg_stat_statements、pg_database、pg_roles 进行 join 查询的结果。 |
|
pg_stat_kcache | 将 pg_stat_kcache_detail 视图按照 datname 维度进行 sum 聚集。 |
|
列名称 | 类型 | 描述 |
---|---|---|
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 列表中。
已经安装插件。
已导入数据。
开启读写,并查询资源使用情况。
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
查询资源使用情况。
select * from pg_stat_kcache_detail; select * from pg_stat_kcache; select pg_stat_kcache_reset();