使用vsql时,我想看看查询完成后运行了多长时间。例如,当我跑:
select count(distinct key) from schema.table;
我希望看到如下输出:
5678 (1 row) total query time: 55 seconds.
如果无法做到这一点,还有另一种衡量查询时间的方法吗?
答案 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_US
和RESOURCE_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
。