多线程 – postgresql pgBench工具,运行用户定义的SQL脚本

请帮我澄清一下,如果pgbench工具可以并行执行我自己的sql场景吗?

谷歌搜索和本地搜索没有带来积极的结果.

我运行的脚本没有错误地执行.但执行后我没有看到任何迹象,我的脚本实际上已经完成了.
pgbench是否使用我的sql脚本提交事务?

这是我得到的输出:

C:\Program Files\PostgreSQL\9.2\bin>pgbench.exe -n -h dbserverhost -U postgres -
T 10 -c 64 -j 8 bench_dbname -f c:\Dev\bench_script.sql

transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 64
number of threads: 8
duration: 10 s
number of transactions actually processed: 1020
tps = 95.846561 (including connections establishing)
tps = 103.387127 (excluding connections establishing)

C:\Program Files\PostgreSQL\9.2\bin>

SQL脚本bench_script.sql是:

--comment here
begin;
  insert into schm.log values ( 'pgbench test', current_timestamp );
end;

pgBench Windows版本对传递给实用程序的参数的顺序很敏感:
“bench_dbname”参数必须是一行中的最后一个参数.

这是pgbench Windows版本命令行的正确示例:

pgbench.exe -d -r -h 127.0.0.1 -U postgres -T 5 -f C:\Dev\bench_script.sql -c 64 -j 8 postgres

对我来说最有用的论据是:

> -T 60(运行脚本的时间以秒为单位)
> -t 100(每个客户的交易金额)
> -d将详细的调试信息打印到输出
> -r包括为脚本的每个操作计算的摘要延迟值
> -f在基准模式下运行用户定义的sql脚本
> -c客户金额
> -j线程数量

pgBench official doc

PgBench,我爱你! 🙂

祝大家好;)

最佳答案 “事务类型:TPC-B(排序)”表示它不处理-f选项来运行自定义sql脚本,而是运行默认查询.

在Windows版本上,getopt似乎停止解析选项,一旦它到达第一个不以连字符开头的选项,即“bench_dbname”.因此,请确保-f在此之前.

点赞