PostgreSQL pg_stat_kcache TPCC性能调优

1 背景知识

本文使用 BenchMarksql 6.0 进行TPC-C 测试并使用 pg_stat_kcache 扩展收集OS统计信息。

2 BenchMarksql 安装与配置

BenchMarksql 是使用 JAVA 语言实现的,底层使用 JDBC 驱动对数据库进行压力测试。此工具使用模拟客户端模拟:查询、多线程组、多用户和应用线程等操作。

本文主要使用 BenchMarksql 6.0PostgreSQL 数据库进行性能测试,并通过 pg_stat_statements 视图 查看相统计信息。

请完成以下两个步骤:

  1. BenchMarksql 6.0 安装与部署
  2. Benchmarksql 6.0 性能测试

3 查看性能视图

完成 PostgreSQL BenchMarksql 6.0 性能测试 章节实验,在完成基准测试之后。查询 pg_stat_kcache 视图

psql -U postgres -d testdb

3.1 查看底层操作系统概览数据

#testdb#
\x
SELECT * FROM pg_stat_kcache;
-[ RECORD 1 ]----+---------------------
datname          | postgres
plan_user_time   | 0.015097999999999997
plan_system_time | 0.004995999999999967
plan_minflts     | 638
plan_majflts     | 0
plan_nswaps      | 0
plan_reads       | 331776
plan_reads_blks  | 40
plan_writes      | 188416
plan_writes_blks | 23
plan_msgsnds     | 0
plan_msgrcvs     | 0
plan_nsignals    | 0
plan_nvcsws      | 26
plan_nivcsws     | 0
exec_user_time   | 0.04368300000000001
exec_system_time | 0.17503600000000005
exec_minflts     | 464
exec_majflts     | 0
exec_nswaps      | 0
exec_reads       | 335872
exec_reads_blks  | 41
exec_writes      | 49152
exec_writes_blks | 6
exec_msgsnds     | 0
exec_msgrcvs     | 0
exec_nsignals    | 0
exec_nvcsws      | 24
exec_nivcsws     | 59
-[ RECORD 2 ]----+---------------------
datname          | testdb
plan_user_time   | 26.170398000007676
plan_system_time | 8.438287000001198
plan_minflts     | 21378
plan_majflts     | 0
plan_nswaps      | 0
plan_reads       | 73728
plan_reads_blks  | 9
plan_writes      | 0
plan_writes_blks | 0
plan_msgsnds     | 0
plan_msgrcvs     | 0
plan_nsignals    | 0
plan_nvcsws      | 4
plan_nivcsws     | 106416
exec_user_time   | 677.6005877859105
exec_system_time | 205.07353200055326
exec_minflts     | 484047
exec_majflts     | 30814
exec_nswaps      | 0
exec_reads       | 290430976
exec_reads_blks  | 35447
exec_writes      | 11158339584
exec_writes_blks | 1362101
exec_msgsnds     | 0
exec_msgrcvs     | 0
exec_nsignals    | 0
exec_nvcsws      | 1012694
exec_nivcsws     | 1266758

关于上述输出的信息解释请查看 pg_stat_kcache 视图的说明。

3.2 查看大于 10s 的SQL 语句

#testdb#
SELECT * FROM pg_stat_kcache_detail 
WHERE exec_user_time > 10 
ORDER BY exec_user_time DESC;

关于上述输出的信息解释请查看 pg_stat_kcache_detail 视图的说明。

4 参考连接

关于 PostgreSQL BenchMarksql 6.0 性能测试