使用 vsql 时,我想看看查询完成后运行多长时间。例如,当我运行时:
select count(distinct key) from schema.table;
我想看到这样的输出:
5678 (1 行) 总查询时间:55 秒。
如果这是不可能的,是否有另一种方法来衡量查询时间?
在vsql
类型:
\timing
然后按 Enter。你会喜欢你会看到的:-)
重复此操作将其关闭。
关于你问题的另一部分:
还有另一种测量查询时间的方法吗?
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_US
也RESOURCE_ACQUISITIONS.DURATION_MS
可能对您感兴趣。如果您还不熟悉,以下是这些表的简短描述:
RESOURCE_ACQUISITIONS
- 保留有关系统中每个资源池的每个运行请求所获取的资源(内存、打开的文件句柄、线程)的信息。
QUERY_PROFILES
- 提供有关已运行查询的信息。
我不确定如何在 vsql 中启用它,或者是否可能。但是您可以从脚本中获取该信息。
这是伪代码(我曾经使用 perl):
print time
system("vsql -c 'select * from table'");
print time
或者将时间放入变量中并做一些减法。
另一种选择是使用 Toad 等工具连接到 Vertica,而不是使用vsql
.