5

使用 vsql 时,我想看看查询完成后运行多长时间。例如,当我运行时:

select count(distinct key) from schema.table;

我想看到这样的输出:

5678
(1 行)
总查询时间:55 秒。

如果这是不可能的,是否有另一种方法来衡量查询时间?

4

3 回答 3

21

vsql类型:

\timing 

然后按 Enter。你会喜欢你会看到的:-)

重复此操作将其关闭。

于 2011-07-21T16:51:57.493 回答
4

关于你问题的另一部分:

还有另一种测量查询时间的方法吗?

Vertica 可以记录在集群上执行的所有查询的历史记录,这是查询时间的另一个来源。在 6.0 之前,相关系统表是 QUERY_REPO,从 6.0 开始是QUERY_REQUESTS.

假设您使用的是 6.0 或更高版本,QUERY_REQUESTS.REQUEST_DURATION_MS将为您提供以毫秒为单位的查询持续时间。

您如何使用的示例QUERY_REQUESTS

    选择 *
    来自查询请求
    其中 request_type = 'QUERY'
    和 user_name = 'dbadmin'
    和 start_timestamp >= CURRENT_DATE
    并请求 ilike 'select%from%schema.table%'
    按 start_timestamp 排序;

和列QUERY_PROFILES.QUERY_DURATION_USRESOURCE_ACQUISITIONS.DURATION_MS可能对您感兴趣。如果您还不熟悉,以下是这些表的简短描述:

RESOURCE_ACQUISITIONS- 保留有关系统中每个资源池的每个运行请求所获取的资源(内存、打开的文件句柄、线程)的信息。

QUERY_PROFILES- 提供有关已运行查询的信息。

于 2013-02-11T20:12:12.593 回答
0

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

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

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

或者将时间放入变量中并做一些减法。

另一种选择是使用 Toad 等工具连接到 Vertica,而不是使用vsql.

于 2011-07-21T02:31:02.893 回答