Greenplum Pgbench命令详解

Greenplum PGBENCH命令详解

Greenplum PGBENCH命令详解 1

PGBENCH概念详解 1

PGBENCH 参数详解 1

查看参数详细信息 1

PGBENCH 测试案例 2

创建表信息 2

修改一下参数 3

修改配置文件 3

重启服务 3

创建SQL测试文件 3

查看测试效果 3

PGBENCH概念详解

TPC:Transactionprocessing Performance Council事务处理性能委员会

TPC-B:TPC-Bmeasures throughput in terms of how many transactions per second a system canperform

测试一秒可以处理的事务个数

事务:在这个文档中的事务并不是指的数据库层面上的事务,而是指一系列SQL语句。

PGBENCH 参数详解

查看参数详细信息

postgres=# pgbench –help

初始化选项:

-i 调用初始化模式

-F NUM  填充因子

-s NUM   规模因子(与产生数据量大小有关)

-f 添加需要执行的SQL文件

Benchmarking选项:

-c NUM 数据库客户端并发数(默认:1)

-C (为每个事务建立新的连接)

-D VARNAME=VALUE 通过客户脚本为用户定义变量

-f FILENAME 从文件FILENAME读取事务脚本

-j NUM  线程数(默认:1)

-i  写事务时间到日志文件

-M{simple|extended|prepared} 给服务器提交查询的协议

-n 在测试之前不运行VACUUM

-N 不更新表“pgbench_tellers” “pgbench_branches”

-r 报告每条命令的平均延迟

-s NUM 在输出中报告规模因子

-S 执行 SELECT-only事务

-t NUM 每个客户端运行的事务数(默认:10)

-T NUM benchmark测试时间(单位:秒)

-v 在测试前清空所有的四个标准表

-p 显示每个进程所需要的时间

常用选项:

-d 输出打印调试信息

-h HOSTNAME 数据库服务器主机或socket 目录

-U USERNAME 指定数据库用户的连接

--help 显示帮助信息,然后退出

--version 输出版本信息,然后退出

以上标红的则是经常使用的参数

PGBENCH 测试案例

创建表信息

以下命令在postgres数据库中执行

$ psql -h 192.168.31.200 -d postgres -U postgres -p 5432

创建tb表

postgres=# create table tbl(id serial8, crt_time timestamp, sensorid int, sensorloc point, info text) with (autovacuum_enabled=on, autovacuum_vacuum_threshold=1,autovacuum_vacuum_cost_delay=0);

创建序列

postgres=# alter sequence tbl_id_seq cache 10000;

创建函数

postgres=#  create or replace function f() returns void as $$  

insert into tbl (crt_time,sensorid,info) values ( clock_timestamp(),trunc(random()*500000),substring(md5(random()::text),1,8) );  

$$ language sql strict;

修改一下参数

修改配置文件

vi $PGDATA/postgresql.conf  

autovacuum_naptime=1s  

maintenance_work_mem=1GB  

autovacuum_work_mem=1GB  

autovacuum = on  

autovacuum_max_workers = 3  

log_autovacuum_min_duration = 0  

autovacuum_vacuum_cost_delay=0  

重启服务

$ pg_ctl reload

创建SQL测试文件

# cd /home/postgres/test-dome

#cat  test.sql

select f();

查看测试效果

以下命令在postgres用户下执行

$ pgbench -M prepared -n -r -P 1 -f /home/postgres/test-dome/test.sql -c 48 -j 48 -T 20

progress: 1.0 s, 4219.9 tps, lat 9.921 ms stddev 7.691

progress: 2.0 s, 5166.3 tps, lat 9.281 ms stddev 5.148

progress: 3.0 s, 5252.5 tps, lat 9.147 ms stddev 5.743

progress: 4.0 s, 5251.0 tps, lat 9.162 ms stddev 5.189

progress: 5.0 s, 5304.0 tps, lat 9.048 ms stddev 5.568

progress: 6.0 s, 5303.7 tps, lat 9.056 ms stddev 4.770

progress: 7.0 s, 5121.3 tps, lat 9.381 ms stddev 5.015

progress: 8.0 s, 5067.9 tps, lat 9.461 ms stddev 5.068

progress: 9.0 s, 5408.2 tps, lat 8.837 ms stddev 5.149

progress: 10.0 s, 5225.5 tps, lat 9.208 ms stddev 5.052

progress: 11.0 s, 4857.7 tps, lat 9.904 ms stddev 7.952

progress: 12.0 s, 4840.6 tps, lat 9.897 ms stddev 6.897

progress: 13.0 s, 4877.0 tps, lat 9.849 ms stddev 7.397

progress: 14.0 s, 4891.0 tps, lat 9.827 ms stddev 5.587

progress: 15.0 s, 5113.0 tps, lat 9.352 ms stddev 5.706

progress: 16.0 s, 4957.6 tps, lat 9.679 ms stddev 6.322

progress: 17.0 s, 4887.6 tps, lat 9.852 ms stddev 5.719

progress: 18.0 s, 4192.2 tps, lat 11.386 ms stddev 8.290

progress: 19.0 s, 4382.5 tps, lat 11.028 ms stddev 9.783

progress: 20.0 s, 2466.5 tps, lat 19.138 ms stddev 17.423

transaction type: /home/postgres/test-dome/test.sql

scaling factor: 1

query mode: prepared

number of clients: 48

number of threads: 48

duration: 20 s

number of transactions actually processed: 96836

latency average = 9.868 ms

latency stddev = 7.167 ms

tps = 4825.008646 (including connections establishing)

tps = 4853.968567 (excluding connections establishing)

script statistics:

 - statement latencies in milliseconds:

         9.868  select f();

在以上可以看出测试线程是48个,在不建立连接的情况下TPS是4825.008646,不在连接的情况下TPS是 4853.968567,测试的语句是select f();

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习自然语言处理

这些进程的后台可靠运行命令你都知道了吗

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP ...

701
来自专栏Java技术分享

redis集群原理

redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。       官方的一个简单测试:     测试完成了50个并发执行1...

2359
来自专栏Leetcode名企之路

求求你别问我一致性hash了

首先,只有存储型的组件,我们才会使用一致性hash;计算型的服务增删节点对整个任务一般没影响,所以负载均衡直接用random就可以。那么像redis、memca...

1463
来自专栏黑白安全

绕过CDN获取网站IP地址

基于masscan扫描IP端中开放的80端口,程序自动连接每个IP测试,筛选出符合条件的ip保存到result.txt 后续程序会提供”基于扫描子域名获取IP段...

1103
来自专栏Snova云数仓

gpexpand分析

具体包括不限于以下内容: 创建用户名,设置环境变量,创建数据目录,安装greenplum软件包,解压目录路径。

3.4K6
来自专栏Java技术分享

redis集群原理

 redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。

3559
来自专栏州的先生

在Django项目中规划和设计Restful风格的api接口

之前我们一共生成了4个数据模型,分别是电影分类、电影、观众和观众评分。所以我们的Restful风格的api接口也是针对于这4个数据模型(资源)进行的设计。

1334
来自专栏企鹅号快讯

浅析负载均衡的6种算法,Ngnix的5种算法

常见的几种负载均衡算法 ? 1、轮询法 将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。 2、...

2998
来自专栏企鹅号快讯

Python人工智能之图片识别,Python3一行代码实现图片文字识别

我们以识别诗词为例 下面是我们要识别的图片 ? 先看下效果图 ? 我们运行代码后识别的结果,有几个字没有正确识别,但是大多数字都能识别出来。 一行代码就能识别图...

6136
来自专栏Python私房菜

实战 | 用aiohttp和uvloop实现一个高性能爬虫

asyncio于Python3.4引入标准库,增加了对异步I/O的支持,asyncio基于事件循环,可以轻松实现异步I/O操作。接下来,我们用基于asyncio...

1513

扫码关注云+社区

领取腾讯云代金券