GaussDB(DWS)资源监控之数据导入导出监控
一、概述
在数据库使用过程中,难免经常使用大数据量的导入导出操作,GaussDB(DWS)中集成了导入导出的实时和历史监控视图,可以获取互联互通、GDS、COPY、\COPY等导入导出业务的数据,从互联互通集群地址、导入导出业务类型、DN上落盘的最大、最小以及总和的行数与字节数等方面监控导入导出类业务的实时进度以及实际数据量,辅助进行性能问题排查;
二、实时监控(PGXC_BULKLOAD_STATISTICS)
导入导出业务的实时进度监控视图仅在8.1.1及以上版本集群上可使用;
1. 实时监控视图字段类型详解
名称 |
类型 |
描述 |
node_name |
text |
节点名称。 |
db_name |
text |
数据库名称。 |
query_id |
bigint |
查询ID,对应debug_query_id。 |
tid |
bigint |
当前线程的线程号。 |
lwtid |
integer |
当前线程的轻量级线程号。 |
session_id |
bigint |
GDS的会话ID。 |
direction |
text |
业务类型 |
query |
text |
查询语句。 |
address |
text |
当前导入导出外表的location。 |
query_start |
timestamp with time zone |
导入/导出开始时间。 |
total_bytes |
bigint |
待处理数据的总大小。仅GDS普通文件导入时,且该行记录来自CN节点才会显示,否则为空。 |
phase |
text |
当前阶段,包括:INITALIZING、TRANSFER_DATA、RELEASE_RESOURCE。 |
done_lines |
bigint |
已传输行数。 |
done_bytes |
bigint |
已传输字节数。 |
2. 实时监控视图简单使用示例
下发任意导入导出作业后查询pgxc_bulkload_statistics视图:
三、历史监控(PGXC_BULKLOAD_INFO)
1. 历史监控的实现逻辑,以及规格约束
历史监控的实现逻辑:
在TopSQL的历史表中新增loader_status字段,对导入导出的历史业务进行记录,然后再通过视图定义进行过滤后,显示出来;
由于数据源自TopSQL的历史表,故受到TopSQL的相关GUC参数的限制,详情可见TopSQL作业查询监控介绍;
TopSQL历史表中记录:
PGXC_BULKLOAD_INFO视图显示:
历史监控的规格约束:
- 该视图仅在8.2.1.210及以上版本集群上可使用;
- 仅支持系统管理员可访问改视图,且仅可在postgres库上访问;
- 不记录异常中断的导入导出类业务;
- gds外表与互联互通外表记录机制不同,查询时gds记录为全量,但互联互通外表的查询为实际使用量;
- 非全量导入导出外表,带limit 的业务会因为limit执行计划的特殊性,数据显示为在一个DN上收取,具体表现为:max值为全部条数,但min值为0;
- 若导入导出为非分区表时:
- gds分区表较小的情况下,即在一个DN上可取出全部数据量,其余DN仍未开启获取数据,将不会显示在其他DN上的获取数据量;
- 互联互通源集群导出非分区表时,所有DN都会记录相应,但只会拿去一个DN的数据,故min值为0;
2. 历史监控视图字段类型详解
名称 |
类型 |
描述 |
datid |
oid |
连接后端的数据库OID。 |
dbname |
text |
连接后端的数据库名称。 |
schemaname |
text |
模式名。 |
nodename |
text |
语句执行的CN名称。 |
username |
text |
连接到后端的用户名。 |
application_name |
text |
连接到后端的应用名。 |
client_addr |
inet |
连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 |
client_hostname |
text |
客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 |
client_port |
integer |
客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。 |
query_band |
text |
用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。 |
block_time |
bigint |
语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。 |
start_time |
timestamp with time zone |
语句执行的开始时间。 |
finish_time |
timestamp with time zone |
语句执行的结束时间。 |
status |
text |
语句执行结束状态:正常为finished,异常为aborted。该处记录的语句状态应为数据库服务端执行状态,当服务器端执行成功,结果集返回时报错,该语句应为finished。 |
queryid |
bigint |
语句执行使用的内部query id。 |
query |
text |
执行的语句。 |
session_id |
text |
在数据库系统中唯一标记一个session,格式:session_start_time.tid.node_name。 |
address |
text |
互联互通对端集群server的address,非空时即为互联互通业务,源集群会额外获取远端集群端口号。 |
direction |
text |
导入导出业务类型 |
min_done_lines |
json |
语句在所有DN上的最小行数 |
max_done_lines |
json |
语句在所有DN上的最大行数 |
total_done_lines |
json |
语句在所有DN上的总行数 |
min_done_bytes |
json |
语句在所有DN上的最小字节数 |
max_done_bytes |
json |
语句在所有DN上的最大字节数 |
total_done_bytes |
json |
语句在所有DN上的总字节数 |
3. 历史监控视图简单使用示例
以gds导入导出举例:
下发普通GDS导入到外表:
insert into ft_customer(C_CUSTKEY,C_NATIONKEY,C_COMMENT) select C_CUSTKEY,C_NATIONKEY,C_COMMENT from local.customer ;
PGXC_BULKLOAD_INFO视图显示:
四、从DIRECTION中判断导入导出业务类型
已知导入导出业务的进度监控中的DIRECTION类型共有8种:
类型名称 | 描述 |
gds to file | GDS 导出到文件; |
gds from file | GDS 从文件中导入; |
gds to pipe | GDS 导出到管道; |
gds frim pipe | GDS 从管道中导入; |
gds compress to | 互联互通导出压缩; |
gds compress from | 互联互通导入压缩 |
copy to | COPY 导出到文件; |
copy from | COPY 从文件中导入; |
执行作业简单示例:
-- COPY TO
copy customer to 'XXX/customer.csv'
-- COPY FROM
copy customer from 'XXX/customer.tbl' delimiters '|'; """
-- GDS TO PIPE
insert into ft_customer(C_CUSTKEY,C_NATIONKEY,C_COMMENT) select C_CUSTKEY,C_NATIONKEY,C_COMMENT from local.customer ;
-- GDS FROM PIPE
insert into customer(C_CUSTKEY,C_NATIONKEY,C_COMMENT) select C_CUSTKEY,C_NATIONKEY,C_COMMENT from ft_customer where c_custkey < 100000 ;
-- GDS COMPRESS TO
insert into ft_customer_compress select * from local.customer where c_custkey < 100000 ;
-- GDS COMPRESS FROM
insert into customer(c_nationkey,c_comment) select c_nationkey,c_comment from ft_customer_compress where c_custkey > 100000 limit 1000 ;
-- GDS TO FILE
insert into ft_customer_gds_csv_insert(c_nationkey,c_comment) select c_nationkey,c_comment from local.customer limit 100000;
-- GDS FROM FILE
insert into customer(c_nationkey,c_comment) select c_nationkey,c_comment from ft_customer_gds_csv where c_custkey > 100000 ;
下发上述作业后的实际PGXC_BULILOAD_INFO视图记录情况:
COPY TO
COPY FROM
GDS TO PIPE
GDS FROM PIPE
GDS COMPRESS TO (创建互联互通表需指定gds_compress 为 snappy)
GDS COMPRESS FROM (创建互联互通表需指定gds_compress 为 snappy)
GDS TO FILE
GDS FROM FILE
- 点赞
- 收藏
- 关注作者
评论(0)