【Postgresql】pgbench压测工具使用简介

官方文档:https://www.postgresql.org/docs/14/pgbench.html

概述

 pgbench是一个在PostgreSQL上运行基准测试的简单程序。它可以在多个并发数据库会话中一遍又一遍地运行相同的 SQL 命令序列,然后计算平均事务率(每秒事务数)。默认情况下,pgbench测试一个基于 TPC-B 的松散场景,每个事务涉及五个SELECT、、UPDATEINSERT命令。但是,通过编写自己的事务脚本文件很容易测试其他情况。

基本命令行和用例

1. 创建基准测试环境,会自动创建几个压力测试用的表

pgbench -i [ other-options] dbname

[ other-options]:-s 指定要生成测试的数据行数,-F也可以用来指定要增加的测试行数

这个过程会创建下面四个表,并初始化一些数据,提示:如果数据库中有同名的表会被删除

table                   # of rows
---------------------------------
pgbench_branches        1
pgbench_tellers         10
pgbench_accounts        100000
pgbench_history         0

2. 运行压力测试

pgbench [options] dbnam
[options]:压力测试使用最普遍的参数有 -c(客户端数据量), -t(事务数量), -T(时间限制), -f(自定义脚本文件),-S(只运行select)
常用连接参数
-h hostname 数据库服务器的主机名
-p port 数据库服务器的端口号
-U login 要连接的用户名其他还有
--partition-method=NAME 创建测试表的分区名
--partitions=NUM 分区数
--tablespace=tablespace 在指定表空间创建测试表
-C 为每个事务建立一个新连接,而不是每个客户端会话只做一次。这对于测量连接开销很有用
更多选项及功能参考官网手册。

 用例:运行一个时间1分钟200个客户端的压力测试

postgres@iZuf65mtbjzzl8rj91h713Z:~$ pgbench -c 200 -S -T 60 postgres
pgbench (14.4 (Ubuntu 14.4-1.pgdg22.04+1))
starting vacuum...end.
transaction type: <builtin: select only>
scaling factor: 1
query mode: simple
number of clients: 200
number of threads: 1
duration: 60 s
number of transactions actually processed: 9522096
latency average = 1.254 ms
initial connection time = 292.991 ms
tps = 159475.299732 (without initial connection time)

报告介绍

前六行报告了一些最重要的压测运行参数设置。

number of transactions actually processed n/m:报告已完成和预期的交易数量(后者只是客户数量和每个客户的交易数量的乘积);

latency average:平均延迟

initial connection time:初始连接时间

tps:每秒事务数

构造脚本

实际测试中一般自己构造一个测试的脚本文件,通过-f <文件名>来替换基准测试用的默认脚本。

一个简单的例子:vi test.sql

/set id random(1,100000000)  
select * from test where id=:id;

运行

pgbench -c 200 -S -T 60 -f test.sql postgres

更多构造脚本的语法请参考官方手册。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值