【问题标题】:How do I display the query time when a query completes in Vertica?如何在 Vertica 中完成查询时显示查询时间?
【发布时间】:2011-07-20 18:52:18
【问题描述】:

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

select count(distinct key) from schema.table;

我希望看到如下输出:

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

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

【问题讨论】:

    标签: sql vertica vsql


    【解决方案1】:

    vsql 中输入:

    \timing 
    

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

    重复此操作会将其关闭。

    【讨论】:

    • 我假设您的意思是输入“vsql”而不是“vsqk”。
    • 请注意这是 vsql 客户端的本地时间(因此该时间还包括您的查询在排队等待数据库服务器端开启的任何时间)
    【解决方案2】:

    关于你问题的另一部分:

    还有其他方法可以测量查询时间吗?

    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 - 提供有关已运行查询的信息。

    【讨论】:

      【解决方案3】:

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

      这是伪代码(我以前使用 perl):

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

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

      另一种选择是使用诸如 Toad 之类的工具连接到 Vertica,而不是使用 vsql

      【讨论】:

        猜你喜欢
        • 2016-02-07
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 2017-06-27
        • 2019-04-24
        • 2020-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多