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

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 保存详细日志以供进一步分析。

相关文章:

  • 【C++】String类的模拟实现
  • [Qt5] QMetaObject::invokeMethod使用
  • Netty源码—7.ByteBuf原理三
  • 蓝桥云客-染色时间
  • 1424.对角线遍历
  • 322 零钱兑换
  • 【大模型基础_毛玉仁】4.4 低秩适配方法
  • RocketMQ 4.x、5.x 性能对比
  • 绩效考核如何从形式化任务升级为公司战略工具?
  • 2025.3.25
  • 基于CondLaneNet论文和全卷积分割头的车道线head设计
  • QML输入控件: Dial基本用法与样式定制(1)
  • 【机器学习】imagenet2012 数据预处理数据预处理
  • K8S学习之基础五十二:k8s配置jenkins
  • Vite 与 Nuxt 深度对比分析
  • 软件设计模式-第一章
  • 数据源为postgres的多表关联flink开发需求,开发思路
  • jmeter通过json提取器获取接口返回token(超详细)
  • 3.1.2 内存池
  • Java.util包之Java.util.List接口
  • 《中国人民银行业务领域数据安全管理办法》发布,6月30日起施行
  • 习近平同俄罗斯总统普京会谈
  • 国家主席习近平同普京总统出席签字和合作文本交换仪式
  • 绍兴柯桥:用一块布托起中国制造的新经纬
  • 公募基金行业迎系统性变革:基金公司业绩差必须少收费
  • 中国德国商会报告:76%在华德企受美国关税影响,但对华投资战略依然稳固