pgbench用法
一、简介
pgbench 是一个简单的给 PostgreSQL 做性能测试的程序。它反复运行同样的 SQL 命令序列,可能是在多个并发数据库会话上头,然后检查平均的事务速度(每秒的事务数 tps)。缺省的时候,pgbench 测试一个(松散的)接近 TPC-B 的情况,每个事务包括五个 SELECT,UPDATE,和 INSERT命令。不过,我们可以很轻松地使用自己的事务脚本文件来实现其它情况。
二、用法
获取帮助
- snippet.bash
pgbench --help
初始化数据据
- snippet.bash
[yz@localhost ~]$ createdb -p 7404 pgbench [yz@localhost ~]$ pgbench -p 7404 -i pgbench
编写测试脚本
[yz@localhost ~]$ cat ./pgbench.sql select count(*) from pgbench_accounts;
执行测试
执行测试后会显示本次测试统计报告:
- snippet.bash
[yz@localhost ~]$ pgbench -p 7404 -c 10 -t 300 pgbench -r -f ./pgbench.sql pgbench (14.1) starting vacuum...end. transaction type: test/pgbench.sql scaling factor: 1 query mode: simple number of clients: 10 number of threads: 1 number of transactions per client: 300 number of transactions actually processed: 3000/3000 latency average = 21.316 ms initial connection time = 15.258 ms tps = 469.132490 (without initial connection time) statement latencies in milliseconds: 19.980 select count(*) from pgbench_accounts;
三、源码
pgbench的源码在PostgreSQL源码目录下:
src/bin/pgbench/
有自己的语法解析,因此对于“元命令”的支持与psql有差异,仅支持少部分“元命令”:
- snippet.c
typedef enum MetaCommand { META_NONE, /* not a known meta-command */ META_SET, /* \set */ META_SETSHELL, /* \setshell */ META_SHELL, /* \shell */ META_SLEEP, /* \sleep */ META_GSET, /* \gset */ META_ASET, /* \aset */ META_IF, /* \if */ META_ELIF, /* \elif */ META_ELSE, /* \else */ META_ENDIF, /* \endif */ META_STARTPIPELINE, /* \startpipeline */ META_ENDPIPELINE /* \endpipeline */ } MetaCommand;
四、参考
打赏作者以资鼓励: