PostgreSQL压测工具之pgbench-tools使用指南

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 最近一直在思考,到底贡献些什么给PG社区呢? 作为一名初学者,该给大家展现一些什么样的内容呢?曾经想过写一些入门指南,但是google一下发现已经有不少资料,并且好书也不少,那有什么是比较难找到的,没错,那就是实战经验,今天给大家介绍一个利器:pgbench-tools,有此利器,登上人生巅峰,当上CEO,迎娶白富美就不是梦了,废话不多说,请跟我一起来进入这神圣殿堂,享受这个美好的过程。

最近一直在思考,到底贡献些什么给PG社区呢?

pg

作为一名初学者,该给大家展现一些什么样的内容呢?曾经想过写一些入门指南,但是google一下发现已经有不少资料,并且好书也不少,那有什么是比较难找到的,没错,那就是实战经验,今天给大家介绍一个利器:pgbench-tools,有此利器,登上人生巅峰,当上CEO,迎娶白富美就不是梦了,废话不多说,请跟我一起来进入这神圣殿堂,享受这个美好的过程。

前因后果

pgbench-tools是作者Greg Smith在使用原生pgbench过程中,发现每次运行产生的结果都不一致,而这个工具就正好解决了问题,解决方案:每个测试用例都运行N次,并且这些用例比通常用要更多的事务,最后将这些测试结果计算出一个平均值。

有一个很酷的功能:测试结果以各种3D、2D图的方式展示,让用户一目了然。

牛刀小试

  • 创建数据库

    createdb results
    createdb pgbench
  • 下载pgbench-tools工具

    cd ~
    mkdir -p test
    git clone https://github.com/gregs1104/pgbench-tools.git
  • 初始化

    cd pgbench-tools
    psql -f init/resultdb.sql -d results
  • 创建测试结果集

    ./newset 'Initial Config'
  • 运行测试

    ./runset

    TIPS:可编辑配置文件config,添加需要测试的用例,默认测试用例是运行一个时长1分钟的只有SELECT功能。

    运行结果保存在results目录下

  • 查看报告

    psql -d results -f reports/report.sql

    TIPS: reports目录下提供了几个强力的工具,比如大家关心的tps统计,有兴趣的同学可以动手完备起来并贡献给社区。

    如果手动修改了测试结果,还可以使用以下命令重新生成报告图片

    ./webreport

学会偷"懒"

看到上述这么多命令,作为一名优秀的程序员,必须想办法让工作高效起来,把这些命令封装到一个脚本,比如叫pgbenchv2.sh
注意该脚本是基于config配置文件编写,脚本里用到的内容请在测试前修改相关变量。

#!/bin/bash
#-----------------------------------------------------
# @filename pgbenchv2.sh
#
# @author 铄懿
# @date 2015-12-19 10:00:00
#-----------------------------------------------------
export PATH=/opt/pgsql/bin:$PATH
source ./config

DROPDBSQL="dropdb -h $TESTHOST -U $TESTUSER -p $TESTPORT"
CREATEDBSQL="createdb -h $TESTHOST -U $TESTUSER -p $TESTPORT"
RESULTPSQL="psql -h $RESULTHOST -U $RESULTUSER -p $RESULTPORT -d $RESULTDB"

print() {
    msg=$1
    echo -ne "[`date`]${msg}\n"
}

execute() {
    cmd=$1
    param=$2
    print "[$FUNCNAME:$LINENO BEGIN] $cmd $param"
    $cmd $param
    [ "$?" -ne 0 ] && {
        print "execute command:$cmd $param FAILED!!!" $red
        exit 1
    }
    print "[$FUNCNAME:$LINENO END] $cmd $param"
}

drop_testdb() {
    execute "$DROPDBSQL" "$RESULTDB"
    execute "$DROPDBSQL" "$TESTDB"
}

create_testdb() {
    execute "$CREATEDBSQL" "$RESULTDB"
    execute "$CREATEDBSQL" "$TESTDB"
}

init_results() {
    $RESULTPSQL -f $BASEDIR/init/resultdb.sql
}

init_test_set() {
    cd $BASEDIR && ./newset 'Initial Config'
}

run_tests() {
    cd $BASEDIR && ./runset
}

drop_testdb
create_testdb
init_results
init_test_set
run_tests

使用方式:

cd pgbench-tools
chmod +x pgbenchv2.sh
./pgbenchv2.sh

以上就是今天的分享,希望对大家有用,祝玩得开心~~

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
关系型数据库 Java 数据库连接
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
PostgreSQL从小白到高手教程 - 第47讲:JMETER工具使用
108 3
|
4月前
|
SQL 关系型数据库 MySQL
postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
118 0
|
6月前
|
监控 关系型数据库 Go
《打造高可用PostgreSQL:策略与工具》
《打造高可用PostgreSQL:策略与工具》
89 0
|
3月前
|
关系型数据库 测试技术 数据库
`pg_rewind` 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点
pg_rewind 是 PostgreSQL 数据库的一个工具,用于将一个数据库集群回退到指定的时间点。这对于恢复数据或解决某些问题非常有用。 简单来说,如果你有一个 PostgreSQL 数据库集群并且你知道在某个时间点它是健康的,但之后出现了问题,你可以使用 pg_rewind 来将数据库回退到那个时间点,从而恢复到已知的、健康的、一致的状态。 使用 pg_rewind 的基本步骤如下: 确定基准时间:首先,你需要确定一个基准时间点,知道在该时间点上数据库是健康的。 备份当前数据库:在执行 pg_rewind 之前,确保你已经备份了当前的数据库。 执行 pg_rewind:使用
|
4月前
|
关系型数据库 数据库 PostgreSQL
postgresql|数据库迁移|ora2pg工具的web界面介绍
postgresql|数据库迁移|ora2pg工具的web界面介绍
44 0
|
4月前
|
SQL 关系型数据库 测试技术
postgresql|数据库|数据库测试工具pgbench之使用
postgresql|数据库|数据库测试工具pgbench之使用
83 0
|
5月前
|
SQL JSON 关系型数据库
PostgreSQL技术大讲堂 - 第34讲:调优工具pgBagder部署
PostgreSQL从小白到专家技术大讲堂 - 第34讲:调优工具pgBagder部署
1149 1
|
6月前
|
SQL 监控 关系型数据库
Navicat 面向 PostgreSQL 查询超时的工具解决方案
Navicat 面向 PostgreSQL 查询超时的工具解决方案
90 0
|
7月前
|
数据可视化 关系型数据库 数据库
2023年三个最佳的免费PostgreSQL GUI工具
2023年三个最佳的免费PostgreSQL GUI工具
192 0
2023年三个最佳的免费PostgreSQL GUI工具
|
11月前
|
SQL 存储 Oracle
【postgreSQL】psql工具特有的快捷命令2
【postgreSQL】psql工具特有的快捷命令2
117 0