说明:标红的是没有翻译的
TPC:Transactionprocessing Performance Council 事务处理性能委员会
TPC-B:TPC-Bmeasures throughput in terms of how many transactions per second a system canperform
测试一秒可以处理的事务个数
事务:在这个文档中的事务并不是指的数据库层面上的事务,而是指一系列SQL语句。
pgbench
名称
pgbench -- 在PostgreSQL中执行基准线测试
大纲
pgbench -i [option...] [dbname]
pgbench [option...] [dbname]
描述
pgbench是一个用于在PostgreSQL数据库中运行基准测试的简单程序。pgbench在多个并发的数据库会话中反复运行一系列相同的SQL命令,并计算事务执行的平均速率(每秒执行的事务个数)。 pgbench默认测试的是一种基于TPC-B的松散的测试,即一个事务中包括5个SELECT,UPDATE和INSERT语句。同时允许基于开发者自己书写的事务脚本文件进行其他场景的测试。
典型的pgbench输出如下:
transactiontype: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 85.184871 (including connections establishing)
tps = 85.296346 (excluding connections establishing)
前六行显示了一些非常重要的参数。接下来显示的是已经完成的事务和预计应该执行的事务个数。这两个数值应该是相等的,如果不相等说明存在执行失败的情况(如果指定为-T模式,则只打印实际完成的事务数量)。最后两行显示的是每秒完成的事务数量(包含连接建立时间和不包含连接建立时间分别计算出的平均值)。
默认的TPC-B-like事务测试需要预先设置特定的表。pgbench调用-i(初始化)选项来创建和填充这些表。在使用一个定制化脚本测试时,不需要调用-i选项初始化,但是需要对这个定制化脚本需要的表进行初始化。初始化过程类似如下:
pgbench -i [ other-options ] dbname
dbname用于指定一个可以用来测试的数据库的数据库名称。你可能需要指定-h,-p,-U等参数来连接数据库服务器。
注意 |
pgbench -i命令会创建四个表(pgbench_accounts, pgbench_branches, pgbench_history, 和pgbench_tellers),创建这几个表会执行对应表的删除动作。执行前应确认对应数据库中是否已经有这些表,是否会误删除。 |
按照默认的比例因子1,这些表按如下行数初始化:
表名 行数
---------------------------------
pgbench_branches 1
pgbench_tellers 10
pgbench_accounts 100000
pgbench_history 0
可以通过指定-s(比例因子)参数来增加初始化时各表的行数。-F(填充因子)参数此时也可以同时使用。
做了必要的设置后,就可以使用如下命令进行基准测试(不需要再使用-i参数)
pgbench [ options ] dbname
在几乎所有情况下,您将需要一些选项做出有用的测试。最重要的选项是-c(客户端数量),-t(事务数量),-T(时间限制)和-f(定制脚本)
具体参数见下文的完整列表。
选项
下面的选项分成三个不同类别,分别是使用在数据库初始化阶段,基准测试运行阶段或两个阶段都可以使用。
初始化选项
pgbench接受以下命令行参数:
-i
--initialize
调用初始化模式.
-F fillfactor
--fillfactor=fillfactor
使用给出的填充因子创建pgbench_accounts,pgbench_tellers,pgbench_branches等表.默认值是100.
-n
--no-vacuum