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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
简介:

最近一直在思考,到底贡献些什么给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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
供应链 Oracle 关系型数据库
|
SQL 关系型数据库 数据挖掘
PolarDB for PostgreSQL 开源必读手册-最佳场景实践与压测(下)
PolarDB for PostgreSQL 开源必读手册-最佳场景实践与压测
220 0
PolarDB for PostgreSQL 开源必读手册-最佳场景实践与压测(下)
|
数据采集 并行计算 Oracle
PostgreSQL技术周刊第32期:索引应用、性能压测
【点击订阅PostgreSQL技术周刊】 PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
11243 0
|
物联网 关系型数据库 数据库
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
379 0
|
存储 缓存 关系型数据库
|
存储 SQL 并行计算
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(中)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
436 0
|
存储 算法 安全
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍(下)
PolarDB for PostgreSQL 开源必读手册-开源PolarDB for PostgreSQL架构介绍
395 0

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版