管道 psql 计时到文件

aps*_*ers 5 postgresql performance performance-testing

我目前正在使用\timing onPostgres 进行一些简单的性能测试。我想运行许多查询并将计时结果通过管道传输到文件。但是,我尝试过的所有选项(\o\l和它们的命令行等效项)仅将查询结果通过管道传输到文件。该Time: 1.234 ms消息不会被写入文件。

有什么方法可以将引起的计时输出通过管道\timing on传输到文件中,还是必须选择其他方法来执行测试?

Phi*_*lᵀᴹ 5

您可以通过将查询输送到 中psql,然后对输出进行 grepping来完成此操作,如下所示:

postgres@winterspring:~$ cat foo.sql
\timing on
select * from foo;
postgres@winterspring:~$ psql < foo.sql | grep "^Time:"
Time: 0.505 ms
postgres@winterspring:~$
Run Code Online (Sandbox Code Playgroud)

如果需要,仅将时间重定向到文件:

postgres@winterspring:~$ psql < foo.sql | grep "^Time:" >> timing.txt
Run Code Online (Sandbox Code Playgroud)

grep 会对性能产生轻微影响。

  • 这几乎就是我最终要做的。不过,我没有使用 grep;我最终在我的 `.psqlrc` 文件中使用 `\o /dev/null`(以消除结果)和 `\set PROMPT1 `(将提示设置为空字符串)使所有其他输出静音。 (2认同)