查看服务器上是否安装pgbench
[root@gsgp60 ~]# find / -name pgbench
[root@gsgp60 ~]# pgbench--version
bash: postgres: 未找到命令...
[root@gsgp60 ~]# yum install postgresql-contrib
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.bupt.edu.cn
* extras: mirrors.bupt.edu.cn
* updates: mirrors.jlu.edu.cn
base
.....
#安装完成验证
[gpadmin@gsgp60 bin]$ pgbench --version
pgbench (PostgreSQL) 9.2.24
pgbench参数解读
-h或--host=<主机名或IP地址>:指定要连接的PostgreSQL服务器的主机名或IP地址。
-p或--port=<端口号>:指定要连接的PostgreSQL服务器的端口号。
-U或--username=<用户名>:指定要连接的PostgreSQL服务器的用户名。
-d或--dbname=<数据库名>:指定要连接的PostgreSQL服务器的数据库名。
-f或--file=<脚本文件>:指定要执行的SQL脚本文件。
-i或--initialize:初始化测试数据库。如果指定此参数,则会在测试前创建一个新的数据库,并执行初始化脚本。初始化脚本必须包含pgbench所需的表和数据。
-s或--scale=<数据规模>:指定测试数据的规模。数据规模越大,测试的负载越大。例如,如果指定-s 10,则表示测试数据的规模是原始大小的10倍。
-t或--transactions=<事务数>:指定要执行的事务数。每个事务执行一组SQL语句,并递增一个计数器。
-c或--clients=<并发用户数>:指定要模拟的并发用户数。每个并发用户都会执行一组SQL语句。
-j或--jobs=<线程数>:指定要使用的线程数。线程数应该等于或小于并发用户数。
-n或--no-vacuum:禁用测试后的自动清理。如果指定此参数,则测试完成后,表中的数据将保留在数据库中。
-q或--quiet:只输出测试结果,不输出每个事务的详细信息。
-v或--verbose:输出详细的测试信息。
-r或--rate=<每秒事务数>:指定每秒要执行的事务数。如果指定此参数,则并发用户数将被忽略,并且测试将尽可能接近指定的每秒事务数。
-P或--progress=<进度输出间隔>:指定测试进度输出的间隔时间。
-S或--select-only:指定只执行SELECT查询。
-T或--time=<测试时间>:指定测试的持续时间。如果指定此参数,则测试将在指定时间内尽可能地执行尽可能多的事务。
--client=<客户端程序>:指定要使用的客户端程序。
--log:指定测试结果输出的日志文件名。
--aggregate-interval=<统计时间间隔>:指定测试结果输出的统计时间间隔。
--latency-limit=<延迟限制>:指定测试结果输出的延迟限制。
--progress-timestamp:在测试进度输出中包含时间戳。
创建测试目录并测试,生成测试log文件
[gpadmin@gsgp60 gp_ops]$ mkdir pressureTest
[gpadmin@gsgp60 gp_ops]$ cd pressureTest/
#第一次测试
[gpadmin@gsgp60 pressureTest]$ nohup pgbench -c 1 -T 20 -r pgbench > file-1.out 2>&1
#第二次测试
[gpadmin@gsgp60 pressureTest]$ nohup pgbench -c 50 -T 200 -r pgbench > file-50.out 2>&1
#第三次测试
[gpadmin@gsgp60 pressureTest]$ nohup pgbench -c 200 -T 200 -r pgbench > file-200.out 2>&1
查看测试文件
[gpadmin@gsgp60 pressureTest]$ vi file-1.out
#以下是对测试文件的解读
nohup: 忽略输入
starting vacuum...end.
transaction type: TPC-B (sort of) #测试使用的是TPC-B事务类型
scaling factor: 1 #测试的规模为1倍(scaling factor: 1)
query mode: simple #测试的查询模式为simple,即每个客户端执行的都是相同的查询。
number of clients: 1 #测试使用了1个客户端
number of threads: 1 #测试使用了1个线程
duration: 20 s #测试持续时间为20秒。
number of transactions actually processed: 520 #实际处理的事务数为520个
tps = 25.914746 (including connections establishing) #(TPS)为25.91(包括连接建立时间)
tps = 25.932584 (excluding connections establishing) #(TPS)为25.93(不包括连接建立时间)
statement latencies in milliseconds:
0.006560 \set nbranches 1 * :scale
0.001196 \set ntellers 10 * :scale
0.001019 \set naccounts 100000 * :scale
0.001779 \setrandom aid 1 :naccounts
0.000879 \setrandom bid 1 :nbranches
0.001033 \setrandom tid 1 :ntellers
0.001067 \setrandom delta -5000 5000
0.240248 BEGIN;
6.408771 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
4.876235 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
5.945294 UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
5.904960 UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
6.209535 INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
8.940862 END;
---调不下去了。。等待修改