如何计算查询时间的累计和?
How to calculate accumulated sum of query timings?
我有一个 sql 文件 运行 有很多查询。我想查看所有查询的累计总和。我知道如果我打开计时,或者调用
\timing
query 1;
query 2;
query 3;
...
query n;
在脚本的开头,它将开始显示每个查询到 运行 所花费的时间。但是,我需要所有查询的累积结果,而不必手动添加它们。
有系统的方法吗?如果没有,我如何获取临时时间以将它们放入变量中。
如果您想为整个脚本计时,在 linux 或 mac 上,您可以使用 time
实用程序启动脚本。
本例中的测量值比原始查询时间的总和略多一些,因为它包括启动和 运行 psql
命令的一些开销。在我的系统上,这个开销大约是 20 毫秒。
$ time psql < script.sql
…
real 0m0.117s
user 0m0.008s
sys 0m0.007s
real
值是执行整个脚本所花费的时间,包括上述开销。
此答案中的方法是一种粗糙、简单的客户端方法,用于测量整个脚本的运行时间。测量 milli-second 精确的服务器端执行时间没有用。对于许多 use-cases.
来说,它可能仍然足够
Kaushik Nayak 的解决方案是一种更精确的方法,可以直接在服务器上计时执行。它还提供了对执行的更多洞察(例如查询级别时间)。
pg_stat_statements
是一个很好的模块,它提供了一种跟踪执行统计信息的方法。
首先,将pg_stat_statements
添加到shared_preload_libraries
中
postgresql.conf
文件。要知道此 .conf 文件在您的
文件系统,运行 show config_file;
shared_preload_libraries = 'pg_stat_statements'
- 重启 Postgres 数据库
创建扩展
CREATE EXTENSION pg_stat_statements;
现在,该模块提供了View
、pg_stat_statements
,可以帮助您分析各种查询执行指标。
重置 运行ning 查询前收集的统计数据内容。
SELECT pg_stat_statements_reset();
现在,执行包含查询的脚本文件。
\i script_file.sql
您可以获得所有执行的查询的所有时间统计信息。要获得总耗时,只需 运行
select sum(total_time) from pg_stat_statements
where query !~* 'pg_stat_statements';
您得到的时间在 milliseconds
中,可以使用各种 timestamp
相关的 Postgres 函数将其转换为所需的格式
我有一个 sql 文件 运行 有很多查询。我想查看所有查询的累计总和。我知道如果我打开计时,或者调用
\timing
query 1;
query 2;
query 3;
...
query n;
在脚本的开头,它将开始显示每个查询到 运行 所花费的时间。但是,我需要所有查询的累积结果,而不必手动添加它们。
有系统的方法吗?如果没有,我如何获取临时时间以将它们放入变量中。
如果您想为整个脚本计时,在 linux 或 mac 上,您可以使用 time
实用程序启动脚本。
本例中的测量值比原始查询时间的总和略多一些,因为它包括启动和 运行 psql
命令的一些开销。在我的系统上,这个开销大约是 20 毫秒。
$ time psql < script.sql
…
real 0m0.117s
user 0m0.008s
sys 0m0.007s
real
值是执行整个脚本所花费的时间,包括上述开销。
此答案中的方法是一种粗糙、简单的客户端方法,用于测量整个脚本的运行时间。测量 milli-second 精确的服务器端执行时间没有用。对于许多 use-cases.
来说,它可能仍然足够Kaushik Nayak 的解决方案是一种更精确的方法,可以直接在服务器上计时执行。它还提供了对执行的更多洞察(例如查询级别时间)。
pg_stat_statements
是一个很好的模块,它提供了一种跟踪执行统计信息的方法。
首先,将
pg_stat_statements
添加到shared_preload_libraries
中postgresql.conf
文件。要知道此 .conf 文件在您的 文件系统,运行show config_file;
shared_preload_libraries = 'pg_stat_statements'
- 重启 Postgres 数据库
创建扩展
CREATE EXTENSION pg_stat_statements;
现在,该模块提供了View
、pg_stat_statements
,可以帮助您分析各种查询执行指标。
重置 运行ning 查询前收集的统计数据内容。
SELECT pg_stat_statements_reset();
现在,执行包含查询的脚本文件。
\i script_file.sql
您可以获得所有执行的查询的所有时间统计信息。要获得总耗时,只需 运行
select sum(total_time) from pg_stat_statements
where query !~* 'pg_stat_statements';
您得到的时间在 milliseconds
中,可以使用各种 timestamp
相关的 Postgres 函数将其转换为所需的格式