当前位置: 首页 > article >正文

How to use pgbench to test performance for PostgreSQL?

pgbench 是一个用于测试 PostgreSQL 数据库性能的基准测试工具。通过模拟多个客户端并发执行 SQL 查询,它可以帮助你评估数据库的性能。以下是使用 pgbench 的基本步骤:

安装 pgbench

pgbench 是 PostgreSQL 的一部分,因此在安装 PostgreSQL 时通常也会包含它。在大多数 Linux 发行版上,你可以通过包管理器安装 PostgreSQL:

# 对于 Ubuntu/Debian 系统
sudo apt-get install postgresql-contrib

# 对于 CentOS/RHEL 系统
sudo yum install postgresql-contrib

基本用法

  1. 初始化测试数据库:首先,必须初始化一个测试数据库。在进行这个步骤之前,请确保数据库服务器正在运行,并且你具有足够的权限创建数据库。

    export PGPASSWORD='<dbpassword>'
    pgbench -i -s <scaling factor> -h <server_ip> -p <port> -U <username> -d <dbname>
    
    例如:
    export PGPASSWORD='pgbench'
    pgbench -i -s 10 -h 192.168.0.1 -p 5432 -U pgbench -d pgbench_test

  2. 运行基准测试:初始化后,可以运行基准测试。以下是一些常用选项:

    export PGPASSWORD='<dbpassword>'
    pgbench -h <server_ip> -p <port> -U <username> -d <dbname> -c 10 -j 2 -T 60
    
    例如:
    export PGPASSWORD='pgbench'
    pgbench -h 192.168.0.1 -p 5432 -U pgbench -d pgbench_test -c 10 -j 2 -T 60
    
    -h <server_ip>:服务器 A 的 IP 地址。
    -p <port>:PostgreSQL 服务器的端口号(默认是 5432)。
    -U <username>:连接到数据库的用户名。
    -d <dbname>:数据库名称。
    -c 10:使用 10 个客户端。
    -j 2:使用 2 个线程。
    -T 60:测试运行时间为 60 秒。

    示例输出

  3. 运行 pgbench 命令后,类似的输出信息如下:

    starting vacuum...end.
    transaction type: TPC-B (sort of)
    scaling factor: 10
    query mode: simple
    number of clients: 10
    number of threads: 2
    duration: 60 s
    number of transactions actually processed: 28290
    latency average = 21.230 ms
    latency stddev = 3.119 ms
    initial connection time = 1.506 ms
    tps = 471.200 (without initial connection time)
    
    transaction type: 测试使用的事务类型,通常是 TPC-B 风格的基准测试。
    scaling factor: 数据的规模因子。在初始化数据库时使用的,影响了数据集的大小。
    query mode: 查询模式(simple 或 extended)。
    number of clients: 模拟的客户端数量。决定了并发加载的水平。
    number of threads: 使用的线程数。线程数可以优化性能,尤其在多核机器上。
    duration: 测试的运行时间(秒)。
    number of transactions actually processed: 实际处理的事务总数。
    latency average: 每个事务的平均延迟时间(毫秒)。延迟时间越低,性能越好。
    latency stddev: 延迟时间的标准差,反映出延迟的波动性或一致性。
    initial connection time: 测试开始时与数据库的初始连接时间。
    tps (transactions per second): 每秒事务数,不包含初始连接时间。在评估数据库的事务处理能力时,TPS 是一个重要指标,数值越高表示性能越好。
    

    注意事项

  • TPS (事务处理能力) 是非常重要的指标。通常希望在负载增加时 TPS 能够线性增加。如果 TPS 随着负载增加而下降,则可能存在瓶颈。

  • 延迟 (Latency) 也需要关注,尤其在需要低延迟的应用中。

  • 如果需要产生更详细的分析(如 per-client latency 报告),可使用 --progress 选项来获取按间隔时间的中间统计数据。也可以选用 --log 选项使 pgbench 保存详细日志以供进一步分析。


http://www.kler.cn/a/611380.html

相关文章:

  • 完全背包模板
  • 突破反爬困境:SDK架构设计,为什么选择独立服务模式(四)
  • 本地部署 LangManus
  • K8S学习之基础五十一:k8s部署jenkins
  • 面试常问系列(二)-神经网络参数初始化之自注意力机制
  • 【hot100】刷题记录(52)-合并K个升序链表
  • How to share files with Linux mint 22 via samba in Windows
  • 【深度破解】爬虫反反爬核心技术实践:验证码识别与指纹伪装
  • 单表、多表查询练习
  • 一种电子发票数据的模糊查询方法
  • HTTP Header 中的 cookie 和 set-cookie
  • git 基本操作命令
  • 《深度剖析:鸿蒙系统不同终端设备的UI自适应布局策略》
  • Android第七次面试总结(Java和kotlin源码级区别 )
  • docker中yum出错解决方案
  • AP 场景架构设计(一) :OceanBase 读写分离策略解析
  • Temu本地化运营如何重构乌兹别克斯坦电商格局
  • 使用 Spring Security的一些常用功能
  • 2025年渗透测试面试题总结-某shopee -红队-Singapore(题目+回答)
  • 如何在 Postman 中发送 PUT 请求?