GaussDB(DWS)资源监控之数据导入导出监控

举报
弹头N.SO 发表于 2023/10/16 15:53:52 2023/10/16
【摘要】 一、概述    在数据库使用过程中,难免经常使用大数据量的导入导出操作,GaussDB(DWS)中集成了导入导出的实时和历史监控视图,可以获取互联互通、GDS、COPY、\COPY等导入导出业务的数据,从互联互通集群地址、导入导出业务类型、DN上落盘的最大、最小以及总和的行数与字节数等方面监控导入导出类业务的实时进度以及实际数据量,辅助进行性能问题排查;二、实时监控(PGXC_BULKLOA...

一、概述

    在数据库使用过程中,难免经常使用大数据量的导入导出操作,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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。