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

时间:2011-07-20 18:52:18

标签: sql vertica vsql

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

select count(distinct key) from schema.table;

我希望看到如下输出:

5678
(1 row)
total query time: 55 seconds.

如果无法做到这一点,还有另一种衡量查询时间的方法吗?

3 个答案:

答案 0 :(得分:19)

vsql类型中:

\timing 

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

重复此操作会将其关闭。

答案 1 :(得分:4)

关于问题的其他部分:

  

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

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

假设您处于6.0或更高版本,QUERY_REQUESTS.REQUEST_DURATION_MS将以毫秒为单位为您提供查询时长。

如何使用QUERY_REQUESTS的示例:

    select *
    from 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_USRESOURCE_ACQUISITIONS.DURATION_MS列也可能对您感兴趣。以下是这些表格的简短描述,以防您不熟悉:

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

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

答案 2 :(得分:0)

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

这是psuedocode(我以前使用perl):

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

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

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