设为首页 收藏本站
查看: 842|回复: 0

[经验分享] postgresql pgbench

[复制链接]

尚未签到

发表于 2016-11-19 06:47:06 | 显示全部楼层 |阅读模式
pgbench is a benchmarking tool for PostgreSQL ,pgbench是postgresql自带的一个性能基准测试工具。
可以通过pgbench --help看一下参数的相关信息
Usage:
pgbench [OPTIONS]... [DBNAME]

Initialization options:
-i invokes initialization mode
-F NUM fill factor
-s NUM scaling factor

Benchmarking options:
-c NUM number of concurrent database clients (default: 1)
-C establish new connection for each transaction
-D VARNAME=VALUE
define variable for use by custom script
-f FILENAME read transaction script from FILENAME
-j NUM number of threads (default: 1)
-l write transaction times to log file
-M {simple|extended|prepared}
protocol for submitting queries to server (default: simple)
-n do not run VACUUM before tests
-N do not update tables "pgbench_tellers" and "pgbench_branches"
-r report average latency per command
-s NUM report this scale factor in output
-S perform SELECT-only transactions
-t NUM number of transactions each client runs (default: 10)
-T NUM duration of benchmark test in seconds
-v vacuum all four standard tables before tests

Common options:
-d print debugging output
-h HOSTNAME database server host or socket directory
-p PORT database server port number
-U USERNAME connect as specified database user
--help show this help, then exit
--version output version information, then exit

初始化:scale为10,pgbench_accounts记录有100W,
pgbench -i -s 10 pgbench -h 127.0.0.1 -p 1931 -U testuser
这里初始化会创建4张表,如下
Schema | Name | Type | Owner | Size | Description
--------+------------------+-------+----------+--------+-------------
public | pgbench_accounts | table | testuser | 130 MB |
public | pgbench_branches | table | testuser | 168 kB |
public | pgbench_history | table | testuser | 960 kB |
public | pgbench_tellers | table | testuser | 456 kB |

测试:100个client并发,每个有100个事务
pgbench -c 100 -t 100 pgbench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 100
number of threads: 1
number of transactions per client: 100
number of transactions actually processed: 10000/10000
tps = 114.339158 (including connections establishing) --包含网络开销的事务数
tps = 114.643324 (excluding connections establishing) --不包含网络开销的事务数

pgbench -c 100 -t 100 -j 100 pgbench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 100
number of threads: 100
number of transactions per client: 100
number of transactions actually processed: 10000/10000
tps = 134.473603 (including connections establishing)
tps = 134.616838 (excluding connections establishing)

这里注意-c必须是-j的倍数,也就是client是threads的倍数。
pgbench -c 100 -j 100 -T 10 pgbench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 100
number of threads: 100
duration: 10 s
number of transactions actually processed: 2144
tps = 209.617862 (including connections establishing)
tps = 211.282453 (excluding connections establishing)

注意:-t和-T不能同时使用,
脚本的内容:
\set nbranches :scale
\set ntellers 10 * :scale
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts
\setrandom bid 1 :nbranches
\setrandom tid 1 :ntellers
\setrandom delta -5000 5000

BEGIN;
UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
END;

举例测试一下机器insert的速度有多快
insertsize.sql内容:create table data(filler text);
insert-size.sql内容:insert into data (filler) values (repeat('X',:scale));
$psql -d pgbench -f insertsize.sql

$pgbench -s 100 -c 10 -t 10000 pgbench -f insert-size.sql
starting vacuum...end.
transaction type: Custom query
scaling factor: 100
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
tps = 608.144907 (including connections establishing)
tps = 608.234303 (excluding connections establishing)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302270-1-1.html 上篇帖子: postgresql dump 下篇帖子: PostgreSQL Cluster 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表