关于号主,姚远:
Oracle ACE(Oracle和MySQL数据库方向)
华为云最有价值专家
《MySQL 8.0运维与优化》的作者
拥有 Oracle 10g、12c和19c OCM等数十项数据库认证
曾任IBM公司数据库部门经理
20+年DBA经验,服务2万+客户
精通C和Java,发明两项计算机专利
TPC-C是经典的衡量在线事务处理(OLTP)系统性能和可伸缩性的基准测试规范。常见的开源数据库的基准测试工具有benchmarksql、 sysbench等,PostgreSQL自带运行基准测试的简单程序pgbench。pgbench是一个类TPC-B 的基准测试工具,可以执行内置的测试脚本,也可以自定义脚本文件。
官方文档:
PostgreSQL: Documentation: 15: pgbench
https://www.postgresql.org/docs/15/pgbench.html
使用pgbench --help可以查询pgbecnh的帮助信息。
01
—
初始化pgbench测试数据
使用下面的命令初始化测试数据
-bash-4.2$ pgbench -i -s 2 -F 80 -U postgresdropping old tables...NOTICE: table "pgbench_accounts" does not exist, skippingNOTICE: table "pgbench_branches" does not exist, skippingNOTICE: table "pgbench_history" does not exist, skippingNOTICE: table "pgbench_tellers" does not exist, skippingcreating tables...generating data (client-side)...200000 of 200000 tuples (100%) done (elapsed 0.93 s, remaining 0.00 s)vacuuming...creating primary keys...done in 1.69 s (drop tables 0.00 s, create tables 0.07 s, client-side generate 1.07 s, vacuum 0.19 s, primary keys 0.36 s).
02
—
使用内置脚本进行测试
pgbench 的内置测试脚本有tpcb-like、s simple-update 和 select-only 三种 可以通过以下 命令查看当前版本的p pgbench包含哪些集成的测试脚本:
-bash-4.2$ pgbench -b listAvailable builtin scripts:tpcb-like: <builtin: TPC-B (sort of)>simple-update: <builtin: simple update>select-only: <builtin: select only>
下面的测试使用默认的tpcb-like方式进行10秒钟、10个客户端的测试:
-bash-4.2$ pgbench -U postgres -T 10 -c 10pgbench (14.3)starting vacuum...end.transaction type: <builtin: TPC-B (sort of)>scaling factor: 2query mode: simplenumber of clients: 10number of threads: 1duration: 10 snumber of transactions actually processed: 4056latency average = 24.613 msinitial connection time = 50.735 mstps = 406.295741 (without initial connection time)
下面的测试使用默认的simple-update方式进行测试:
-bash-4.2$ pgbench -b simple-update -U postgres -T 10 -c 10pgbench (14.3)starting vacuum...end.transaction type: <builtin: simple update>scaling factor: 2query mode: simplenumber of clients: 10number of threads: 1duration: 10 snumber of transactions actually processed: 15846latency average = 6.289 msinitial connection time = 47.659 mstps = 1590.073191 (without initial connection time)
03
—
使用自定义脚本进行测试
创建一个表
CREATE TABLE tb1 (id SERIAL PRIMARY KEY,ncode INT);
向表中插入数据的脚本
-bash-4.2$ cat Insert.sql\set ncode random(1,900000)INSERT INTO tb1 (ncode) VALUES (:ncode) ;
运行pgbench 使用该脚本进行测试:
-bash-4.2$ pgbench -f Insert.sql -U postgrespgbench (14.3)starting vacuum...end.transaction type: Insert.sqlscaling factor: 1query mode: simplenumber of clients: 1number of threads: 1number of transactions per client: 10number of transactions actually processed: 10/10latency average = 9.194 msinitial connection time = 5.623 mstps = 108.761855 (without initial connection time)
检查一下插入的数据
postgres=# select * from tb1;id | ncode----+--------1 | 2478692 | 5958993 | 2855954 | 1790895 | 4081146 | 5078097 | 4533658 | 2314179 | 30692110 | 533048(10 rows)
插入了10条记录。
欢迎加我的微信,拉你进数据库微信群👇

推荐文章👇
托业890分的Oracle ACE为您翻译国际大佬的雄文(合集)




