监控 COPY 加载和指标
您可以使用以下内容检查 COPY 加载:
-
Vertica 函数
-
LOAD_STREAMS 系统表
-
LOAD_SOURCES 系统表
一般而言,执行_引擎_配置文件 系统表会记录有关查询事件的信息,包括加载。
使用 Vertica 函数
两个元函数会从当前会话中运行的最近 COPY 语句返回已接受或已拒绝行数的 COPY 指标:
-
要获取接受的行数,请使用 GET_NUM_ACCEPTED_ROWS 函数:
=> select get_num_accepted_rows(); get_num_accepted_rows ----------------------- 11 (1 row)
-
要检查拒绝的行数,请使用 GET_NUM_REJECTED_ROWS 函数:
=> select get_num_rejected_rows(); get_num_rejected_rows ----------------------- 0 (1 row)
注意
GET_NUM_ACCEPTED_ROWS 和 GET_NUM_REJECTED_ROWS 支持来自 STDIN 的加载、来自 Vertica 客户端的 COPY LOCAL 或启动程序上的单个文件。不能将这些函数用于多节点加载。使用 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 系统表包含有关来自 COPY 和 COPY 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。