FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
您的足迹: pgbench用法
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;

四、参考



打赏作者以资鼓励: