监控 COPY 加载和指标

您可以使用以下内容检查 COPY 加载:

  • Vertica 函数

  • LOAD_STREAMS 系统表

  • LOAD_SOURCES 系统表

一般而言,执行_引擎_配置文件 系统表会记录有关查询事件的信息,包括加载。

使用 Vertica 函数

两个元函数会从当前会话中运行的最近 COPY 语句返回已接受或已拒绝行数的 COPY 指标:

  1. 要获取接受的行数,请使用 GET_NUM_ACCEPTED_ROWS 函数:

    => select get_num_accepted_rows();
     get_num_accepted_rows
    -----------------------
                        11
    (1 row)
    
  2. 要检查拒绝的行数,请使用 GET_NUM_REJECTED_ROWS 函数:

    => select get_num_rejected_rows();
     get_num_rejected_rows
    -----------------------
                        0
    (1 row)
    

使用 CURRENT_LOAD_SOURCE 函数

可以将 CURRENT_LOAD_SOURCE 函数作为 COPY 语句的一部分。这样做可以将由该函数计算得出的输入文件名或值插入到列中。

若要将多个源文件的文件名插入列中:

=> COPY t (c1, c2, c3 as CURRENT_LOAD_SOURCE()) FROM '/home/load_file_1' ON  exampledb_node02,
'/home/load_file_2' ON exampledb_node03 DELIMITER ',';

使用 LOAD_STREAMS 系统表

Vertica 包括一组包含监控信息的系统表。LOAD_STREAMS 系统表包含有关来自 COPYCOPY FROM VERTICA 语句的加载流指标的信息。因此,您可以查询表值以获取 COPY 指标。

Vertica 将维护系统表指标直到其达到指定的大小配额(以 KB 计)。配额是通过内部进程设置的,不能直接设置或查看。

标记复制流

COPY 可以包含 STREAM NAME 参数以标记其加载流,以便在 LOAD_STREAMS 系统表中可以轻松识别。例如:

=> COPY mytable FROM myfile DELIMITER '|' STREAM NAME 'My stream name';

加载流指标

以下 LOAD_STREAMS 列显示加载进度的状态:

取决于数据大小,在 PARSE_COMPLETE_PERCENT 达到 100% 的时间与 SORT_COMPLETE_PERCENT 开始增长的时间之间可能会出现明显的滞后。

此示例将从 LOAD_STREAMS 系统表中查询加载流数据:

=> \pset expanded
Expanded display is on.
=> SELECT stream_name, table_name, load_start, accepted_row_count,
   rejected_row_count, read_bytes, unsorted_row_count, sorted_row_count,
   sort_complete_percent FROM load_streams;
-[ RECORD 1 ]----------+---------------------------
stream_name            | fact-13
table_name             | fact
load_start             | 2010-12-28 15:07:41.132053
accepted_row_count     | 900
rejected_row_count     | 100
read_bytes             | 11975
input_file_size_bytes  | 0
parse_complete_percent | 0
unsorted_row_count     | 3600
sorted_row_count       | 3600
sort_complete_percent  | 100

使用 LOAD_SOURCES 系统表

LOAD_STREAMS 表显示已加载或已拒绝的总行数。按源对这些信息进行分组可以帮助您确定数据的来源。LOAD_SOURCES 系统表包含一些与 LOAD_STREAMS 相同的数据,但添加了这些特定于源的信息。如果启用分摊,LOAD_SOURCES 还会提供有关如何在节点之间分摊加载的信息。

您可以使用此表确定不同查询结果的原因。例如,您可以使用以下语句创建基于 glob 的外部表:

=> CREATE EXTERNAL TABLE tt AS COPY WITH SOURCE AWS(dir = 'foo', file = '*');

如果从此表进行选择,Vertica 会从 foo 目录中的每个文件加载数据,并在 LOAD_SOURCES 表中为每个文件创建一行。假设您稍后重复查询看到了不同的结果。您可以查看 LOAD_SOURCES 表,并发现在两次查询之间有人将另一个文件添加到了 foo 目录。由于每个文件均记录在 LOAD_SOURCES 中,因此您可以看到解释更改后的查询结果的新文件。

如果使用多个数据源,您可能更愿意禁用此报告。要禁用报告,请将 LoadSourceStatisticsLimit 配置参数设置为 0。此参数会设置由 LOAD_SOURCES 为每个加载配置的源数量的上限。默认值为 256。