【发布时间】:2011-07-20 18:52:18
【问题描述】:
使用 vsql 时,我想看看查询完成后运行多长时间。例如当我运行时:
select count(distinct key) from schema.table;
我希望看到如下输出:
5678 (1 行) 总查询时间:55 秒。
如果这不可能,是否有另一种方法来衡量查询时间?
【问题讨论】:
使用 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的示例:
您可能也对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。
【讨论】: