我想对我的PostgreSQL数据库进行一些SQL查询的基准测试。有什么方法可以使用psql计时SQL查询吗?

评论

有关对PostgreSQL查询进行基准测试的更多详细信息,请访问dba.stackexchange.com/q/42012/9622

#1 楼

只需输入以下内容即可打开计时:

\timing

评论


从bash起,psql的“ -c”选项不允许此设置。您可以使用以下命令执行此操作:psql --o / dev / null << EOF \ timing select 1 EOF

– 3manuek
16年7月14日在17:38



或者执行psql -c'\ timing'-c'select 1'

– cdmckay
17年8月24日在2:11

如果希望每次启动客户端时都启用\ timing,则将其添加到〜/ .psqlrc。

–乔尔·哈里斯(Joel Harris)
1月24日16:02

#2 楼

可以在psql提示符下使用\timing打开计时(如Caleb所说)。

如果您使用的是8.4或更高版本,则可以在\timing上添加一个可选的on / off参数,这可能会有所帮助如果您希望能够在.psqlrc中设置计时,则可以在脚本中显式设置\timing on,而普通的\timing会将其关闭

#3 楼

如果要连接到远程服务器,则\timing返回的时间还包括网络延迟。

如果您不希望这样做并且也不需要查询输出,最好使用EXPLAIN ANALYZE,它会输出查询计划以及计划者的估算值以及实际的执行时间。例如,EXPLAIN ANALYZE SELECT foo from bar ;

评论


...唯一的问题是您没有收到正常的查询输出。

– dezso
17年17月17日下午4:56

使用说明分析产生的时间大约是使用\ timing时的两倍,这与基于此处有关网络延迟的评论所期望的相反。我怀疑正常执行分析会增加查询时间。根据文档,我认为EXPLAIN(分析,定时关闭)SELECT foo FROM bar将为您提供更多有用的定时信息。有关详细信息,请参见postgresql.org/docs/9.6/static/sql-explain.html。

–幼虫
17年5月5日下午14:53