pgbench 性能测试工具的使用

这篇具有很好参考价值的文章主要介绍了pgbench 性能测试工具的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

  pgbench是一种在PostgreSQL上运行基准测试的简单程序, 它是pg自带的工具;pgbench是一种在PostgreSQL上运行基准测试的简单程序。它可能在并发的数据库会话中一遍一遍地运行相同序列的 SQL 命令,并且计算平均事务率(每秒的事务数)。默认情况下,pgbench会测试一种基于 TPC-B 但是要更宽松的场景,其中在每个事务中涉及五个SELECT、UPDATE以及INSERT命令。但是,通过编写自己的事务脚本文件很容易用来测试其他情况。测试的目的是了解硬件的处理能力;通过调整参数优化数据库事务处理性能。

pgbench 的测试结果报告
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 500
query mode: prepared
number of clients: 512
number of threads: 10
duration: 600 s
number of transactions actually processed: 562451
latency average = 546.467 ms
initial connection time = 176.577 ms
tps = 936.927622 (without initial connection time)

transaction type 表明本次测试所使用的测试类型
scaling factor 表明pgbench在初始化时设置的数据量的比例因子
query mode 表明指定的查询模式,包括 simple查询模式(默认)、extended查询模式和prepared 查询模式
number of clients表明指定的客户端连接数
number of threads表明测试时每个客户端的线程数
number of transactions actually processed 测试结束时实际处理的事务数
latency average 测试过程的平均响应时间
tps 单位时间内执行的事务数

pgbench工具的使用
1 通过内置脚本进行测试
1.1 初始化测试数据

pgbench -i [ other-options ] dbname
pgbench -i会创建四个表pgbench_accounts、 pgbench_branches、pgbench_history以及pgbench_tellers,如果同名表已经存在会被先删除。如果你已经有同名表,一定注意要使用另一个数据库!
pgbench -i testdb

table_name counts
pgbench_accounts 100000
pg_branches 1
pgbench_history 0
pg_tellers 10

如果指定 -s 参数可以放大数据量: pgbench -i -s 500 testdb

table_name counts
pgbench_accounts 50000000
pg_branches 50
pgbench_history 0
pg_tellers 500

pgbench -i -s 500 -F 90 -h 10.229.89.210 -p 9393 -U postgres -d postgres ==>典型案例
初始化选项
pgbench接受下列命令行初始化参数:
-i
–initialize

要求调用初始化模式。
-I init_steps
–init-steps=init_steps

只执行选出的一组普通初始化步骤。init_steps指定要被执行的初始化步骤,每一个步骤使用一个字符代表。每一个步骤都以指定的顺序被调用。默认是dtgvp。可用的步骤是:
   d(删除)
  删除任何已有的pgbench表。
  t(创建表)
  创建标准pgbench场景使用的表,即pgbench_accounts、pgbench_branches、pgbench_history以及pgbench_tellers。
  g或G(生成数据、客户端或服务器端)
  生成数据并且装入到标准的表中,替换掉已经存在的任何数据。
  使用 g(客户端数据生成),数据在 pgbench 客户端生成,然后发送到服务器。 这通过 COPY 广泛使用客户端/服务器带宽。 使用 g 会导致日志记录每 100,000 行打印一条消息,同时为 pgbench_accounts 表生成数据。
  使用G(服务器端数据生成),仅从pgbench客户端发送少量查询,然后在服务器中实际生成数据。 此变体不需要大量带宽, 但服务器将完成更多工作。 使用G会导致日志记录在生成数据时不打印任何进度消息。
  默认的初始化行为使用客户端数据生成(相当于g)。
v(清理)
在标准的表上调用VACUUM。
p(创建主键)
在标准的表上创建主键索引。
f(创建外键)
在标准的表之间创建外键约束(注意这一步默认不会被执行)。
-F fillfactor
–fillfactor=fillfactor

用给定的填充因子创建表pgbench_accounts、pgbench_tellers以及pgbench_branches。默认是100。
-n
–no-vacuum

在初始化期间不执行清理(这个选项会抑制v初始化步骤,即便在-I中指定了该步骤)。
-q
–quiet

把记录切换到安静模式,只是每 5 秒产生一个进度消息。默认的记录会每 100,000 行打印一个消息,这经常会在每秒钟输出很多行(特别是在好的硬件上)。
如果在 -I 中指定了 G,则此设置无效。
-s scale_factor
–scale=scale_factor

将生成的行数乘以比例因子。例如,-s 100将在pgbench_accounts表中创建 10,000,000 行。默认为 1。当比例为 20,000 或更高时,用来保存账号标识符的列(aid列)将切换到使用更大的整数(bigint),这样才能足以保存账号标识符。
–foreign-keys
在标准的表之间创建外键约束(如果f在初始化步骤序列中不存在,这个选项会把它加入)。
–index-tablespace=index_tablespace
在指定的表空间而不是默认表空间中创建索引。
–partition-method=NAME
使用 NAME 方法创建一个分区的 pgbench_accounts 表。 预期值为 range 或 hash。 此选项要求 --partitions 设置为非零。 如果未指定,默认值为 range。
–partitions=NUM
创建一个分区 pgbench_accounts 表,其中 NUM 分区的大小与按比例缩放的帐户数几乎相等。 默认为 0,表示没有分区。
–tablespace=tablespace
在指定的表空间而不是默认表空间中创建表。
–unlogged-tables
把所有的表创建为非日志记录表而不是永久表。

基准选项
pgbench接受下列命令行基准参数:

-b scriptname[@weight]
–builtin=scriptname[@weight]
把指定的内建脚本加入到要执行的脚本列表中。@之后是一个可选的整数权重,它允许调节抽取该脚本的可能性。如果没有指定,它会被设置为 1。可用的内建脚本有:tpcb-like、simple-update和select-only。这里也接受内建名称无歧义的前缀缩写。如果用上特殊的名字list,将会显示内建脚本的列表并且立刻退出。
-c clients
–client=clients
模拟的客户端数量,也就是并发数据库会话数量。默认为 1。
-C
–connect
为每一个事务建立一个新连接,而不是只为每个客户端会话建立一个连接。这对于度量连接开销有用。
-d
–debug
打印调试输出。
-D varname=value
–define=varname=value
定义一个由自定义脚本(见下文)使用的变量。允许多个-D选项。
-f filename[@weight]
–file=filename[@weight]
把一个从filename读到的事务脚本加入到被执行的脚本列表中。@后面是一个可选的整数权重,它允许调节抽取该测试的可能性。详见下文。
-j threads
–jobs=threads
pgbench中的工作者线程数量。在多 CPU 机器上使用多于一个线程会有用。客户端会尽可能均匀地分布到可用的线程上。默认为 1。
-l
–log
把与每一个事务相关的信息写到一个日志文件中。
-L limit
–latency-limit=limit
对持续超过limit毫秒的事务进行独立的计数和报告, 这些事务被认为是迟到(late)了的事务。
在使用限流措施时(–rate=…),滞后于计划超过 limit毫秒并且因此没有希望满足延迟限制的事务根本 不会被发送给服务器。这些事务被认为是被跳过(skipped) 的事务,它们会被单独计数并且报告。
-M querymode
–protocol=querymode
要用来提交查询到服务器的协议:
  simple:使用简单查询协议。
  extended使用扩展查询协议。
  prepared:使用带预备语句的扩展查询语句。
在prepared模式中,pgbench重用从第二次查询迭代开始的语法分析结果,因此pgbench运行速度比其他模式快。
-N
–skip-some-updates
运行内建的简单更新脚本。这是-b simple-update的简写。
-P sec
–progress=sec
每sec秒显示进度报告。该报告包括运行了多长时间、从上次报告以来的 tps 以及从上次报告以来事务延迟的平均值和标准偏差。如果低于限流值(-R),延迟会相对于事务预定的开始时间(而不是实际的事务开始时间)计算,因此其中也包括了平均调度延迟时间。
-r
–report-latencies
在基准结束后,报告平均的每个命令的每语句等待时间(从客户端的角度来说是执行时间)。详见下文。
-R rate
–rate=rate
按照指定的速率执行事务而不是尽可能快地执行(默认行为)。该速率 以 tps(每秒事务数)形式给定。如果目标速率高于最大可能速率,则 该速率限制不会影响结果。
-S
–select-only
执行内建的只有选择的脚本。是-b select-only简写形式。
-t transactions
–transactions=transactions
每个客户端运行的事务数量。默认为 10。
-T seconds
–time=seconds
运行测试这么多秒,而不是为每个客户端运行固定数量的事务。-t和-T是互斥的。
-v
–vacuum-all
在运行测试前清理所有四个标准的表。在没有用-n以及-v时, pgbench将清理pgbench_tellers 和pgbench_branches表,并且截断pgbench_history。
–aggregate-interval=seconds
聚集区间的长度(单位是秒)。仅可以与-l选项一起使用。通过这个选项,日志会包含针对每个区间的概要数据,如下文所述。
–log-prefix=prefix
设置–log创建的日志文件的文件名前缀。默认是pgbench_log。
–progress-timestamp
当显示进度(选项-P)时,使用一个时间戳(Unix 时间)取代从运行开始的秒数。单位是秒,在小数点后是毫秒精度。这可以有助于比较多种工具生成的日志。
–show-script=scriptname
在 stderr 上显示内置脚本 scriptname 的实际代码,并立即退出。

测试案例

内置:

create database testdb;

pgbench -i -F 90 -s 500 testdb -p 5432 -U postgres -d postgres   // 初始化,填充率90%,放大倍数500

pgbench -c 256 -j 10  -M prepared -n -T 600 -r -h 10.229.89.212 -p 5678 -U pg14 -d postgres
// 256 客户端连接, 每个客户端 10个线程, prepared 查询协议, 运行时间 600s,

pgbench -c 256 -j 10  -M prepared -n -t 10000 -r -h 10.229.89.212 -p 5678 -U pg14 
-d postgres >> 、home/postgres/test_data/1000_transaction_test.log
// 256 客户端连接, 每个客户端 10个线程, prepared 查询协议,运行事务数 10000,将结果输出至指定日志
-T 与 -t 互斥

自定义测试
1 首先在指定数据库创建测试表

create table test(id int, age int);

2 准备数据

自定义脚本 insert.sql
\sleep 500ms
\set id random(1,100000)
\set age random(18,32)
insert into test(id, age) values(:id, :age);

3 测试结果
pgbench -f insert.sql -c 10 -j 10 -M prepared -n -T 600 -r -h 10.229.89.212 -p 5678 -U wp_pg14 -d postgres文章来源地址https://www.toymoban.com/news/detail-433548.html

transaction type: insert.sql
scaling factor: 1
query mode: prepared
number of clients: 10
number of threads: 10
duration: 600 s
number of transactions actually processed: 11980
latency average = 501.071 ms
initial connection time = 4.248 ms
tps = 19.957239 (without initial connection time)
statement latencies in milliseconds:
       501.163  \sleep 500ms
         0.065  \set id random(1,100000)
         0.036  \set age random(18,32)
         0.453  insert into test(id, age) values(:id, :age);

到了这里,关于pgbench 性能测试工具的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 磁盘性能测试工具-FIO的安装及使用

    FIO介绍 FIO是一款测试IOPS的工具,用于对磁盘进行压力测试和验证,磁盘I/O是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类,FIO可产生很多线程或进程并执行用户指定的特定类型的I/O操作,典型用途是编写和模拟I/O负载匹配的作业文件,也就

    2024年01月16日
    浏览(50)
  • 手机APP性能测试工具PerfDog性能狗安装教程及简单使用

            PerfDog是一个由腾讯研发的主流性能测试软件。可以提高软件和游戏的运行效率,支持iOS/安卓在移动平台上的性能测试和分析,快速定位和分析性能问题等。无需安装,即插即用,减少繁琐的测试障碍,安卓设备不需要ROOT,iOS设备也不需要越狱,有效解决安卓和i

    2024年02月11日
    浏览(49)
  • 自动化测试工具 AirTest 的使用方法与简介

    目录         前言: Airtest简介 1.基于图像识别的Airtest框架 2.基于UI识别的Poco框架 Airtest环境搭建 Airtest布局 Airtest使用步骤 第一步:连接移动设备 第二步:创建一个.air文件(也就是我们的测试脚本) 第三步:用Airtest辅助窗口编辑第一个测试脚本 第四步:引入Poco Airtest常用

    2024年02月10日
    浏览(61)
  • 性能测试工具 ab(Apache Bench)使用详解

    Apache Bench (ab) 是一个由 Apache 提供的非常流行的、简单的性能测试工具,用于对 HTTP 服务器进行压力测试。下面是 ab 工具的一些基本使用方法。 安装 在大多数 Unix 系统中,ab 通常作为 Apache HTTP 服务器的一部分预装在系统中。你可以通过在终端中运行 ab -V 来检查 ab 的版本,

    2024年04月11日
    浏览(39)
  • 【DockerCE】使用Docker安装运行性能测试工具-RunnerGo

    一、安装环境 CentOS-7.9 / Docker-CE-23.0.1 / Docker-compose-2.17.2 二、资源配置 4核8G(官方建议8核16GB) 三、安装运行 从Github下载安装所需的文件包(版本1.0.3),这里选择的是tar.gz包  将压缩包里面的runnergo目录上传到本地虚拟机/data目录下,目录结构如下所示: 备注:runnergo.yaml是

    2023年04月23日
    浏览(47)
  • 【性能测试】性能数据采集工具nmon安装使用及报告参数含义详解

    目录 nmon nmon下载 解压安装 启动 数据采集配置 生成图形结果 nmon报告中的参数含义  资料获取方法 nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产

    2024年02月13日
    浏览(53)
  • 性能测试第十三课--监控工具--ServerAgent的使用

    为什么要有监控 做性能测试(以下2个结论都需要【数据】支撑) 最终想要的目标,是要想得到性能指标数据值;  有性能问题,找到问题调优 怎么获取数据--监控(监控工具、监控平台) 最简单的监控工具  ServerAgent ServerAgent的优势 简单 适用于windoss、linux服务器 可以与图形

    2024年02月05日
    浏览(49)
  • React中的性能测试工具组件Profiler的基本使用

    React中的性能测试工具组件Profiler是一个非常有用的工具,它可以帮助我们分析React应用程序的性能瓶颈。在本文中,我们将学习如何使用Profiler组件来测试React应用程序的性能。 首先,让我们来了解一下Profiler组件的基本用法。在React中,我们可以通过在组件树上添加Profiler组

    2024年02月11日
    浏览(39)
  • OpenHarmony实战开发-性能测试工具SmartPerf Editor使用指导

    SmartPerf Editor是一款PC端桌面应用,通过监测、采集应用运行时FPS、CPU、GPU、Memory、Battery、Network等性能数据,帮助开发者了解应用的性能状况。SmartPerf Editor还集成了DrawingDoc功能,可录制Render Service绘制指令,回放并生成不同图形库文件。通过逐帧逐绘制指令回放,来识别是否

    2024年04月28日
    浏览(42)
  • 性能测试工具 Lmbench 的使用方法以及解析运行结果

    Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处理、上层系统调用、内存读入反应时间)等功能。 官网地址:http://www.bit

    2023年04月18日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包