[postgres]使用pgbench进行基准测试
前言
pgbench是一种在postgres上进行基准测试的简单程序,一般安装后就会自带。pgbench可以再并发的数据库绘画中一遍遍地进行相同序列的SQL语句,并且计算平均事务率。
测试准备
既然要测postgres,肯定要先有个postgres。安装过程略过。
一些环境信息:
- postgres版本:15.3,安装完成后默认配置
- os version:debian 12
- 硬件配置:vbox虚拟机,4核4GB内存,40GB SSD存储
pgbench选项
运行pgbench --help
查看帮助文档
pgbench is a benchmarking tool for PostgreSQL.
Usage:
pgbench [OPTION]... [DBNAME]
Initialization options:
-i, --initialize 调用初始化模式
-I, --init-steps=[dtgGvpf]+ (default "dtgvp")
运行选定的初始化步骤
-F, --fillfactor=NUM 设置填充因子
-n, --no-vacuum 初始化期间不运行 VACUUM
-q, --quiet 安静日志记录(每 5 秒一条消息)
-s, --scale=NUM 缩放因子
--foreign-keys 在表之间创建外键约束
--index-tablespace=TABLESPACE
在指定的表空间中创建索引
--partition-method=(range|hash)
使用此方法对 pgbench_accounts 进行分区(默认:range)
--partitions=NUM 将 pgbench_accounts 分成 NUM 个部分(默认:0)
--tablespace=TABLESPACE 在指定的表空间中创建表
--unlogged-tables 将表创建为非记录表
Options to select what to run:
-b, --builtin=NAME[@W] 添加内置脚本 NAME,权重为 W(默认:1)
(使用 "-b list" 列出可用脚本)
-f, --file=FILENAME[@W] 添加脚本 FILENAME,权重为 W(默认:1)
-N, --skip-some-updates 跳过 pgbench_tellers 和 pgbench_branches 的更新
(与 "-b simple-update" 相同)
-S, --select-only 仅执行 SELECT 类型事务
(与 "-b select-only" 相同)
Benchmarking options:
-c, --client=NUM 并发数据库客户端数(默认:1)
-C, --connect 为每个事务建立新连接
-D, --define=VARNAME=VALUE
为自定义脚本定义变量
-j, --jobs=NUM 线程数(默认:1)
-l, --log 将事务时间写入日志文件
-L, --latency-limit=NUM 计数超过 NUM 毫秒的事务为延迟
-M, --protocol=simple|extended|prepared
提交查询的协议(默认:simple)
-n, --no-vacuum 在测试前不运行 VACUUM
-P, --progress=NUM 每 NUM 秒显示线程进度报告
-r, --report-per-command 每个命令报告延迟、失败和重试
-R, --rate=NUM 目标事务每秒速率
-s, --scale=NUM 在输出中报告此缩放因子
-t, --transactions=NUM 每个客户端运行的事务数(默认:10)
-T, --time=NUM 基准测试持续时间(秒)
-v, --vacuum-all 测试前清理所有四个标准表
--aggregate-interval=NUM 将数据汇总在 NUM 秒内
--failures-detailed 按基本类型分组报告失败情况
--log-prefix=PREFIX 事务时间日志文件的前缀
(默认:"pgbench_log")
--max-tries=NUM 运行事务的最大尝试次数(默认:1)
--progress-timestamp 使用 Unix 纪元时间戳作为进度
--random-seed=SEED 设置随机种子("time", "rand", 整数)
--sampling-rate=NUM 日志记录的事务比例(例如,0.01 代表 1%)
--show-script=NAME 显示内置脚本代码,然后退出
--verbose-errors 打印所有错误的消息
Common options:
-d, --debug 打印调试输出
-h, --host=HOSTNAME 数据库服务器主机或套接字目录
-p, --port=PORT 数据库服务器端口号
-U, --username=USERNAME 以指定的数据库用户身份连接
-V, --version 输出版本信息,然后退出
-?, --help 显示此帮助信息,然后退出
Report bugs to <pgsql-bugs@lists.postgresql.org>.
PostgreSQL home page: <https://www.postgresql.org/>
测试示例
- 初始化测试数据。以下命令会自动创建四张测试表,在其中一个表
pgbench_accounts
中创建200000行数据。再次初始化的话,pgbench会先把旧表删除,然后再建测试表。
pgbench -i -s 2
- 使用默认配置执行一次简单的基准测试
$ pgbench
pgbench (15.3)
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)> # 本次测试所使用的测试类型
scaling factor: 2 # 用于记录在初始化设置的数据量比例因子
query mode: simple # 测试是指定的查询类型
number of clients: 1 # 客户端数量
number of threads: 1 # 每个客户端的线程数
maximum number of tries: 1
number of transactions per client: 10 # 每个客户端的事务数
number of transactions actually processed: 10/10 # 实际完成的事务数量和计划完成的事务数量
number of failed transactions: 0 (0.000%)
latency average = 7.501 ms # 平均响应时间
initial connection time = 1.650 ms
tps = 133.317335 (without initial connection time)
删除测试数据
DROP TABLE IF EXISTS pgbench_accounts;
DROP TABLE IF EXISTS pgbench_branches;
DROP TABLE IF EXISTS pgbench_history;
DROP TABLE IF EXISTS pgbench_tellers;
测试数据
500w数据量,postgres为默认配置
序号 | 测试命令 | 平均响应时间 | TPS | 总事务数 |
---|---|---|---|---|
1 | pgbench -T60 |
6.857 ms | 145.833890 | 8750 |
2 | pgbench -j2 -c4 -T60 |
11.505 ms | 347.677286 | 20858 |
3 | pgbench -j4 -c8 -T60 |
13.721 ms | 583.052560 | 34987 |
[postgres]使用pgbench进行基准测试的更多相关文章
- 使用 HammerDB 对 Citus 和 Postgres 进行 Benchmark,每分钟200万新订单处理测试(官方博客)
在为 Postgres 运行性能基准测试时,主要建议是:"自动化!" 如果您正在测量数据库性能,您可能不得不一遍又一遍地运行相同的基准测试. 要么是因为你想要一个稍微不同的配置,要 ...
- PostgreSQL Performance Monitoring Tools
PostgreSQL Performance Monitoring Tools https://github.com/CloudServer/postgresql-perf-tools This pa ...
- PostgreSQL Monitor pg_view
PostgreSQL Monitor pg_view https://github.com/zalando/pg_view Requirements Linux 2.6, python 2.6, ps ...
- PostgreSQL Monitor pg_activity
PostgreSQL Monitor pg_activity Command line tool for PostgreSQL server activity monitoring. https:// ...
- postgresql压力测试工具用法以及参数解读
pgbench是PostgreSQL自带的一个数据库压力测试工具, 支持TPC-B测试模型, 或自定义测试模型. 自定义测试模型支持元命令, 调用shell脚本, 设置随机数, 变量等等. 支持3种异 ...
- Linux系统管理员应该了解的一些I/O统计工具
作为一个Linux系统管理员,统计各类IO是一项必不可少的工作.其统计工具中iostat显然又是最重要的一个统计手段.但是这里iostat不是本文的重点,因为这个工具的使用在网络上已经有大量的教程,可 ...
- postgresql-pgbench(转)
pgbench测试: pg9.6.2的pgbench报错: [thunisoft@localhost ~]$ pgbench -S -c 8 -t 60 pgbenchdb Segmentatio ...
- Postgresql 监控sql之 pg_stat_statements模块
postgresql.confpg_stat_statements.max = 1000000pg_stat_statements.track = allpg_stat_statements.trac ...
- pg_receivewal实践
测试从pg_receivewal的日志中恢复从库为主库: 主从配置async模式,配置pg_receivewal接收日志pg_receivewal -D /dbaas/pg/data/pg_recei ...
- 使用pgbench测试PostgreSQL
pgbench –help 初始化选项: -i 调用初始化模式 -F NUM 填充因子 -s NUM 规模因子(与产生数据量大小有关) Benchmarking选项: -c ...
随机推荐
- 创龙科技位居头版,2023深圳elexcon电子展为智能化赋能!
紧跟前沿技术应用及市场发展热点,elexcon2023聚焦三大展示板块:"嵌入式与AIoT展""电源与储能展""SiP与先进封装展",吸引了 ...
- 嵌入式进阶之关于SPI通信的案例分享——基于全志科技T3与Xilinx Spartan-6处理器
本文主要介绍基于全志科技T3与Xilinx Spartan-6的通信案例. 适用开发环境: Windows开发环境:Windows 7 64bit.Windows 10 64bit Linux开发环境 ...
- 2个qubit的量子门
量子计算机就是基于单qubit门和双qubit门的,再多的量子操作都是基于这两种门.双qubit门比单qubit门难理解得多,不过也重要得多.它可以用来创建纠缠,没有纠缠,量子机就不可能有量子霸权. ...
- ubuntu16.04个性化配置
前言 记录一下个人配置,方便后续参考 正文 配置用户sudo免密权限 只建议在个人测试环境这么配置,否则最好root还是需要用密码确认一下 sudo su echo "你的用户名 ALL=( ...
- Maven的依赖详解和打包方式
设置maven maven下载与安装教程: https://blog.csdn.net/YOL888666/article/details/122008374 1. 在File->setting ...
- Python爬虫(1-4)-基本概念、六个读取方法、下载(源代码、图片、视频 )、user-agent反爬
Python爬虫 一.爬虫相关概念介绍 1.什么是互联网爬虫 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据 解 ...
- EasyDesktop 浏览器书签管理从未如此简单
作为一名软件开发从业人员, 每天80%的时间都在与浏览器打交道, 一半的时间在用浏览器开发调试, 另一半时间则是在互联网上搜寻各种知识和资源. 为此, 我的浏览器书签栏存储和很多非常棒的链接, 多到2 ...
- CF30D King's Problem? 题解
CF30D 题意 有 \(n+1\) 个点,其中的 \(n\) 个点在数轴上.求以点 \(k\) 为起点走过所有点的最短距离,允许重复. 思路 有两种情况: \(k\) 在数轴上(如图1). \(k\ ...
- java面试一日一题:讲下mysql中的锁
问题:请讲下在mysql中的锁 分析:该问题主要考察对中锁的掌握,主要考察的是读.写锁.行锁.间隙锁.next-key,其他还有表锁.意向锁 回答要点: 主要从以下几点去考虑, 1.mysql中的锁有 ...
- 释放资源的方式try-with-resources
1.try-catch-finally 2.try-with-resources 使用方法 try(//这里定义你要使用的资源){} catch(){} 注意:try()里只能存放流对象(资源对象), ...