如何使用 psql 为 SQL 查询计时?

Jon*_*nas 297 postgresql benchmark psql

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

小智 406

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

\timing

  • 或者做`psql -c '\timing' -c 'select 1'` (15认同)
  • 如果您希望每次启动客户端时都启用它,请将 `\timing` 添加到 `~/.psqlrc`。 (7认同)
  • 从 bash 开始,`psql` 的“-c”选项不允许这个设置。您可以使用以下内容执行此操作:```psql --o /dev/null <<EOF \timing select 1 EOF ``` (2认同)

Jac*_*las 76

可以\timing在 psql 提示符下打开计时(正如 Caleb 已经说过的)。

如果您使用的是 8.4 或更高版本,您可以向 中添加一个可选的开/关参数\timing,如果您希望能够在 .psqlrc 中设置定时打开,这会很有帮助- 然后您可以\timing on在脚本中显式设置,\timing否则普通会切换它关了


Dev*_*evi 27

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

当您不希望这样并且也不需要查询输出时,最好使用EXPLAIN ANALYZE,它输出带有规划器估计值加上实际执行时间的查询计划。

例如, EXPLAIN ANALYZE SELECT foo from bar ;

  • 使用 `explain analysis` 产生的时间大约是我在使用 `\timing` 时看到的两倍,这与我根据这里关于网络延迟的评论所期望的相反。我怀疑正常执行 `analyze` 会增加查询时间。根据文档,我认为`EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bar` 会给你更多有用的计时信息。有关详细信息,请参阅 https://www.postgresql.org/docs/9.6/static/sql-explain.html。 (4认同)