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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

最近一直在思考,到底贡献些什么给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 开源必读手册-最佳场景实践与压测
214 0
PolarDB for PostgreSQL 开源必读手册-最佳场景实践与压测(下)
|
数据采集 并行计算 Oracle
PostgreSQL技术周刊第32期:索引应用、性能压测
【点击订阅PostgreSQL技术周刊】 PostgreSQL(简称PG)的开发者们:云栖社区已有5000位PG开发者,发布了3000+PG文章(文章列表),沉淀了700+的PG精品问答(问答列表)。
11235 0
|
物联网 关系型数据库 数据库
|
SQL Cloud Native 关系型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
ADBPG(AnalyticDB for PostgreSQL)是阿里云提供的一种云原生的大数据分析型数据库
1258 1
|
数据可视化 关系型数据库 MySQL
将 PostgreSQL 迁移到 MySQL 数据库
将 PostgreSQL 迁移到 MySQL 数据库
1754 2
|
SQL 存储 自然语言处理
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
在当今社交媒体的时代,人们通过各种平台分享自己的生活、观点和情感。然而,对于平台管理员和品牌经营者来说,了解用户的情感和意见变得至关重要。为了帮助他们更好地了解用户的情感倾向,我们可以使用PostgreSQL中的pg_jieba插件对这些发帖进行分词和情感分析,来构建一个社交媒体情感分析系统,系统将根据用户的发帖内容,自动判断其情感倾向是积极、消极还是中性,并将结果存储在数据库中。
玩转阿里云RDS PostgreSQL数据库通过pg_jieba插件进行分词
|
关系型数据库 测试技术 分布式数据库
PolarDB | PostgreSQL 高并发队列处理业务的数据库性能优化实践
在电商业务中可能涉及这样的场景, 由于有上下游关系的存在, 1、用户下单后, 上下游厂商会在自己系统中生成一笔订单记录并反馈给对方, 2、在收到反馈订单后, 本地会先缓存反馈的订单记录队列, 3、然后后台再从缓存取出订单并进行处理. 如果是高并发的处理, 因为大家都按一个顺序获取, 容易产生热点, 可能遇到取出队列遇到锁冲突瓶颈、IO扫描浪费、CPU计算浪费的瓶颈. 以及在清除已处理订单后, 索引版本未及时清理导致的回表版本判断带来的IO浪费和CPU运算浪费瓶颈等. 本文将给出“队列处理业务的数据库性能优化”优化方法和demo演示. 性能提升10到20倍.
834 4

相关产品

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