本篇内容主要讲解“PostgreSQL中pgbench有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中pgbench有什么作用”吧!

pgbench是面向PostgreSQL的一个基准测试工具。默认情况下(工具默认提供),pgbench 测试基于TPC-B场景,每个事务包括5个SELECT、UPDATE 和INSERT命令。可以通过编写自己的事务脚本文件按需进行定制化测试。

一、数据初始化

通过-i参数,初始化基表和数据.创建测试基表pgbench_accounts/pgbench_branches/pgbench_history/pgbench_tellers

[atlasdb@localhosttmp]$createdbpgbench[atlasdb@localhosttmp]$pgbench-i-Uatlasdb-p5432-dpgbenchdroppingoldtables...NOTICE:table"pgbench_accounts"doesnotexist,skippingNOTICE:table"pgbench_branches"doesnotexist,skippingNOTICE:table"pgbench_history"doesnotexist,skippingNOTICE:table"pgbench_tellers"doesnotexist,skippingcreatingtables...generatingdata...100000of100000tuples(100%)done(elapsed0.45s,remaining0.00s)vacuuming...creatingprimarykeys...done.二、参数说明

通过pgbench --help可以查看完整的参数列表.
其中:
-c, --client=NUM
数据库客户端数量,可以理解为数据库会话数量(postgres进程数),默认为1

-C, --connect
每个事务创建一个连接,由于PG使用进程模型,可以测试频繁Kill/Create进程的性能表现

-j, --jobs=NUM
pgbench的工作线程数

-T, --time=NUM
以秒为单位的压测时长

-v, --vacuum-all
每次测试前执行vacuum命令,避免"垃圾"空间的影响

-M, --protocol=simple|extended|prepared
提交查询命令到服务器使用的协议,simple是默认选项,prepared是类似绑定

-r, --report-latencies
报告每条命令(SQL语句)的平均延时

-S, --select-only
只执行查询语句

[atlasdb@localhosttmp]$pgbench--helppgbenchisabenchmarkingtoolforPostgreSQL.Usage:pgbench[OPTION]...[DBNAME]Initializationoptions:-i,--initializeinvokesinitializationmode-I,--init-steps=[dtgvpf]+(default"dtgvp")...三、基本使用

执行基准测试
执行以下命令,启动4个工作线程,创建8个客户端连接PG:
pgbench -h 192.168.26.103 -U atlasdb -p 5432 -d pgbench -r -M prepared -v -T 120 -c 8 -j 4 --aggregate-interval=5 -l
以下为执行过程中的部分日志输出:

client5receivingclient2receivingclient2sendingINSERTINTOpgbench_history(tid,bid,aid,delta,mtime)VALUES(2,1,39145,-3294,CURRENT_TIMESTAMP);client2receivingclient4receivingclient4executingscript"<builtin:TPC-B(sortof)>"client4executing\setaidclient4executing\setbidclient4executing\settidclient4executing\setdeltaclient4sendingBEGIN;client4receivingclient2receivingclient2sendingEND;client2receivingclient4receivingclient4sendingUPDATEpgbench_accountsSETabalance=abalance+4608WHEREaid=80792;client4receivingclient4receivingclient4sendingSELECTabalanceFROMpgbench_accountsWHEREaid=80792;client4receivingclient2receiving

下面是结果输出:

transactiontype:<builtin:TPC-B(sortof)>scalingfactor:1querymode:preparednumberofclients:8numberofthreads:4duration:120snumberoftransactionsactuallyprocessed:27809latencyaverage=34.537mstps=231.635472(includingconnectionsestablishing)tps=231.685954(excludingconnectionsestablishing)statementlatenciesinmilliseconds:0.035\setaidrandom(1,100000*:scale)0.008\setbidrandom(1,1*:scale)0.007\settidrandom(1,10*:scale)0.006\setdeltarandom(-5000,5000)1.588BEGIN;1.987UPDATEpgbench_accountsSETabalance=abalance+:deltaWHEREaid=:aid;1.829SELECTabalanceFROMpgbench_accountsWHEREaid=:aid;9.305UPDATEpgbench_tellersSETtbalance=tbalance+:deltaWHEREtid=:tid;15.904UPDATEpgbench_branchesSETbbalance=bbalance+:deltaWHEREbid=:bid;1.741INSERTINTOpgbench_history(tid,bid,aid,delta,mtime)VALUES(:tid,:bid,:aid,:delta,CURRENT_TIMESTAMP);2.101END;

执行查询基准测试
pgbench -h 192.168.26.103 -U atlasdb -p 5432 -d pgbench -S -r -M prepared -v -T 120 -c 8 -j 4 --aggregate-interval=5 -l
最终结果如下:

transactiontype:<builtin:selectonly>scalingfactor:1querymode:preparednumberofclients:8numberofthreads:4duration:120snumberoftransactionsactuallyprocessed:418458latencyaverage=2.294mstps=3486.766688(includingconnectionsestablishing)tps=3487.047954(excludingconnectionsestablishing)statementlatenciesinmilliseconds:0.018\setaidrandom(1,100000*:scale)2.266SELECTabalanceFROMpgbench_accountsWHEREaid=:aid;

到此,相信大家对“PostgreSQL中pgbench有什么作用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!