如何在Vertica中查询完成时显示查询时间?

5

使用vsql时,我想在查询完成后看到查询运行所需的时间。例如,当我运行:

select count(distinct key) from schema.table;

我希望看到以下输出结果:
5678
(1 行)
总查询时间:55 秒。
如果不可能,是否有其他方法来测量查询时间?
3个回答

22

vsql中,输入以下内容:

\timing 

按下回车键,你会喜欢你所看到的 :-)

重复这个操作将关闭它。


我猜你是想打“vsql”,而不是“vsqk”。 - geoffrobinson
1
请注意,这是vsql客户端的本地时间(因此此时间还包括查询在数据库服务器端排队等待轮到其执行的任何时间)。 - chinnychinchin

4
关于您问题的另一部分:
是否有其他方法来测量查询时间?
Vertica可以记录在集群上执行的所有查询的历史记录,这是查询时间的另一个来源。在6.0之前,相关的系统表是QUERY_REPO,从6.0开始使用QUERY_REQUESTS。
假设您使用的是6.0或更高版本,则QUERY_REQUESTS.REQUEST_DURATION_MS将以毫秒为单位给出查询持续时间。
下面是如何使用QUERY_REQUESTS的示例:
选择*
从query_requests
WHERE request_type = 'QUERY'
AND user_name = 'dbadmin'
AND start_timestamp >= CURRENT_DATE
AND request ilike 'select%from%schema.table%'
ORDER BY start_timestamp;
QUERY_PROFILES.QUERY_DURATION_US和RESOURCE_ACQUISITIONS.DURATION_MS列也可能对您有兴趣。如果您还不熟悉这些表,请查看以下简要说明:
RESOURCE_ACQUISITIONS-保留有关每个资源池中正在运行的每个请求获取的资源(内存、打开的文件句柄、线程)的信息。
QUERY_PROFILES-提供有关已运行查询的信息。

0

我不确定如何在vsql中启用它,或者是否可能。但是你可以从脚本中获取该信息。

这是伪代码(我曾经使用过perl):

print time
system("vsql -c 'select * from table'");
print time

或者将时间存储到变量中并进行一些减法计算。

另一个选择是使用像Toad这样的工具连接到Vertica,而不是使用vsql


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接