华为云用户手册

  • 示例 查询OBS IO Scheduler在每个节点读请求相关的统计信息。 SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name; node_name | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+----------------- dn_6001_6002 | r | 26990 | 26990 | 0 | 215 | 18 | 16 | 12 | 10 dn_6003_6004 | r | 21475 | 21475 | 10 | 190 | 30 | 30 | 20 | 20 dn_6005_6006 | r | 12384 | 12384 | 36 | 133 | 30 | 27 | 20 | 17 查询结果显示,这是当前IO Scheduler在进行读取IO操作时的某个时刻统计信息的快照(snapshot),此时带宽处于上升阶段,current_bps与best_bps相等。以dn_6003_6004为例,可以观察到该DN当前队列中存在排队的请求,total_token_num与available_token_num相等,说明查询视图的时刻IO Scheduler还未开始处理这些请求。 等待一段时间后,再次发起查询。 SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name; node_name | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+----------------- dn_6001_6002 | r | 13228 | 26990 | 0 | 609 | 18 | 18 | 12 | 12 dn_6003_6004 | r | 15717 | 21475 | 0 | 622 | 30 | 30 | 20 | 20 dn_6005_6006 | r | 18041 | 21767 | 0 | 609 | 30 | 30 | 20 | 20 此时队列中已经没有了排队的请求,且available_token_num等于total_token_num,说明IO Scheduler已经处理完所有请求,且没有新的请求需要被处理;但观察到current_bps不为零,是因为统计bps的周期为3秒,此时显示的是3秒前的结果。 短暂间隔后再次查询结果如下,current_bps会更新为0。 SELECT * FROM pgxc_obs_io_scheduler_stats WHERE io_type = 'r' ORDER BY node_name; node_name | io_type | current_bps | best_bps | waiting_request_num | mean_request_size | total_token_num | available_token_num | total_worker_num | idle_worker_num --------------+---------+-------------+----------+---------------------+-------------------+-----------------+---------------------+------------------+----------------- dn_6001_6002 | r | 0 | 26990 | 0 | 609 | 18 | 18 | 12 | 12 dn_6003_6004 | r | 0 | 21475 | 0 | 622 | 30 | 30 | 20 | 20 dn_6005_6006 | r | 0 | 21767 | 0 | 609 | 30 | 30 | 20 | 20
  • 示例 查询文件缓存所使用的硬盘的信息: 1 2 3 4 5 6 7 8 9 SELECT * FROM pgxc_disk_cache_path_info order by 1; path_name | node_name | cache_size | disk_available | disk_size | disk_use_ratio ----------------+--------------+------------+----------------+--------------+------------------ dn_6001_6002_0 | dn_6001_6002 | 19619 | 137401716736 | 160982630400 | .146481105479564 dn_6001_6002_1 | dn_6001_6002 | 35968 | 137401716736 | 160982630400 | .146481105479564 dn_6003_6004_0 | dn_6003_6004 | 27794 | 121600655360 | 160982630400 | .244634933235629 dn_6003_6004_1 | dn_6003_6004 | 26158 | 121600655360 | 160982630400 | .244634933235629 dn_6005_6006_0 | dn_6005_6006 | 24533 | 134394839040 | 160982630400 | .165159379579873 dn_6005_6006_1 | dn_6005_6006 | 31065 | 134394839040 | 160982630400 | .165159379579873
  • 示例 1 SELECT /*+ dict (bitmaptbl_high (server_ip)) */ distinct(server_ip) FROM bitmaptbl_high WHERE scope_name='saetataetaeta' ORDER BY server_ip; 生成的计划如下,server_ip使用了字典编码: 使用no dict可以禁用server_ip使用字典编码: 1 SELECT /*+ no dict (bitmaptbl_high (server_ip)) */ distinct(server_ip) FROM bitmaptbl_high WHERE scope_name='saetataetaeta' ORDER BY server_ip;
  • GS_OBS_LATENCY GS_OBS_LATENCY记录logtime之前10分钟内OBS的平均延迟信息,延迟数据是根据相关OBS的操作进行估算的结果。该视图仅8.2.0及以上集群版本支持。 表1 GS_OBS_LATENCY字段 名称 类型 描述 nodename text 集群节点。 hostname text 主机节点。 latency_ms double precision logtime之前10分钟内OBS的平均延迟,单位ms。 reqcount bigint logtime之前10分钟内OBS的请求次数。 logtime timestamp with time zone 记录延迟信息的时刻。 父主题: 系统视图
  • GS_BLOCKLIST_QUERY GS_BLOCKLIST_QUERY视图用于查询作业黑名单信息和异常信息,此视图是由系统表GS_BLOCKLIST_QUERY和GS_WLM_SESSION_INFO关联所得,同时对查询结果进行了去重筛选,因此在GS_WLM_SESSION_INFO表较大的情况下,查询可能需要消耗较长时间。 表1 GS_BLOCKLIST_QUERY视图字段 名字 类型 引用 描述 unique_sql_id bigint - 基于查询解析树生成的查询ID。 block_list boolean - 查询作业是否属于黑名单。 except_num integer - 查询作业异常次数。 except_time timestamp - 查询作业最近一次异常时间。 query text - 执行的查询语句。 此视图仅限在gaussdb数据库中查询,其它数据库中查询会直接报错。 通常对于DML语句,在计算Unique SQL ID的过程中会忽略常量值。但对于DDL、DCL以及设置参数等语句,常量值不可以忽略。因此一个unique_sql_id可能会对应一个或多个查询。 父主题: 系统视图
  • PG_EXCEPT_RULE PG_EXCEPT_RULE系统表存储关于异常规则的信息。一个异常规则集合由多个名称相同的异常规则组成。 表1 PG_EXCEPT_RULE 名称 类型 描述 name name 异常规则集合的名称。 rule name 该异常规则集中某一个具体规则类型或者触发当前异常规则集时采取的操作。(如blocktime/elapsedtime/spillsize等类型或者触发异常规则后的操作) value name 该异常规则对应的规则阈值。如果是触发异常规则后的操作,那么该字段为abort。 父主题: 系统表
  • PV_MATVIEW_DETAIL PV_MATVIEW_DETAIL视图显示物化视图的具体信息。该视图仅9.1.0 200及以上集群版本支持。 表1 PV_MATVIEW_DETAIL字段 名称 类型 描述 matview text 物化视图名。 baserel text 基表名。 partids oidvector 指定分区时候的分区OID. contain_entire_rel boolean 是否以基表的整表建物化视图。 build_mode text 物化视图的build模式(同pg_matview的build_mode)。 refresh_mode text 物化视图的刷新模式(同pg_matview的refresh_mode)。 refresh_method text 物化视图的刷新方法(同pg_matview的refresh_method) 'c' :表示完全刷新。 mapping text 基表分区和物化视图分区的映射关系。 active boolean 物化视图是否需要刷新。 refresh_start_time timestamp with time zone 最后一次刷新的开始时间。 refresh_finish_time timestamp with time zone 最后一次刷新的结束时间。 父主题: 系统视图
  • 注意事项 禁止一条SQL语句中,出现重复子查询语句。 尽量少用标量子查询(标量子查询指结果为1个值,并且条件表达式为等值的子查询)。 避免在SELECT目标列中使用子查询,可能导致计划无法下推影响执行性能。 子查询嵌套深度建议不超过2层。由于子查询会带来临时表开销,过于复杂的查询应考虑从业务逻辑上进行优化。 子查询可以在 SELECT 语句中嵌套其他查询,从而实现更复杂的查询。子查询还可以在WHERE子句中使用其他查询的结果,从而更好地过滤数据。但是子查询可能会导致查询性能问题和代码难阅读和理解。 所以在 GaussDB 等数据库中使用SQL子查询时,请结合实际业务情况进行操作。
  • 示例 创建学生信息表student(ID、姓名、性别、学校)。 1 2 3 4 5 6 7 SET current_schema=public; DROP TABLE IF EXISTS student; CREATE table student( sId VARCHAR(10) NOT NULL, sname VARCHAR(10) NOT NULL, sgender VARCHAR(10) NOT NULL, sschool VARCHAR(10) NOT NULL); 给表student插入数据。 1 2 3 4 5 6 7 8 INSERT INTO student VALUES('s01' , 'ZhaoLei' , 'male', 'NENU'); INSERT INTO student VALUES('s02' , 'QianDian' , 'male', 'SJTU'); INSERT INTO student VALUES('s03' , 'SunFenng' , 'male', 'Tongji'); INSERT INTO student VALUES('s04' , 'LIYun' , 'male', 'CCOM'); INSERT INTO student VALUES('s05' , 'ZhouMei' , 'female', 'FuDan'); INSERT INTO student VALUES('s06' , 'WuLan' , 'female', 'WHU'); INSERT INTO student VALUES('s07' , 'ZhengZhu' , 'female', 'NWAFU'); INSERT INTO student VALUES('s08' , 'ZhangShan' , 'female', 'Tongji'); 查看表student。 1 SELECT * FROM student; 回显如下: 创建教师信息表teacher(ID、姓名、性别、学校)。 1 2 3 4 5 6 DROP TABLE IF EXISTS teacher; CREATE table teacher( tid VARCHAR(10) NOT NULL, tname VARCHAR(10) NOT NULL, tgender VARCHAR(10) NOT NULL, tschool VARCHAR(10) NOT NULL); 给表teacher插入数据。 1 2 3 INSERT INTO teacher VALUES('t01' , 'ZhangLei', 'male', 'FuDan'); INSERT INTO teacher VALUES('t02' , 'LiLiang', 'male', 'WHU'); INSERT INTO teacher VALUES('t03' , 'WangGang', 'male', 'Tongji'); 查询表teacher。 1 SELECT * FROM teacher; 使用UNION(合并且去重)获取学生和教师所在学校,并按学校名称首字母升序排序。 1 2 3 4 5 6 7 8 SELECT t.school FROM ( SELECT sschool AS school FROM student UNION SELECT tschool AS school FROM teacher ) t ORDER BY t.school ASC; 回显如下: 使用UNION ALL(合并不去重)获取所有学生和教师所在学校,并按学校名称首字母升序排序。 1 2 3 4 5 6 7 8 SELECT t.school FROM ( SELECT sschool AS school FROM student UNION ALL SELECT tschool AS school FROM teacher ) t ORDER BY t.school ASC; 使用UNION ALL(合并带有WHERE子句SQL结果集)获取来自“Tongji”的学生和教师的所有信息,并按学生和教师的编号升序排序。 1 2 3 4 5 6 7 8 9 10 SELECT t.* FROM ( SELECT Sid AS id,Sname AS name,Sgender AS gender,Sschool AS school FROM student WHERE Sschool='Tongji' UNION ALL SELECT Tid AS id,Tname AS name,Tgender AS gender,Tschool AS school FROM teacher WHERE Tschool='Tongji' ) t ORDER BY t.id ASC;
  • PG_SEQUEN CES PG_SEQUENCES视图显示当前用户有权限的序列属性信息。该视图仅9.1.0及以上集群版本支持。 表1 PG_SEQUENCES字段 名称 类型 描述 schemaname name 命名空间的名称。 sequencename name 序列的名称。 sequenceowner name 序列的所有者。 start_value bigint 序列的起始值。 min_value bigint 序列生成的最小值。 max_value bigint 序列生成的最大值。 increment_by bigint 序列生成的步长,即每次生成的值增加的量。 cycle boolean 如果设置为true,则在达到最大值后重新开始从最小值生成序列值;如果设置为false,则在达到最大值后停止生成序列值。 cache_size bigint 序列缓存值的大小。 last_value bigint 序列最近一次生成的值。 父主题: 系统视图
  • PGXC_MEMORY_DEBUG_INFO PGXC_MEMORY_DEBUG_INFO视图显示当前集群每个节点在执行作业时的内存报错信息,便于定位内存报错问题,当执行语句报错提示“memory is temporarily unavailable”时,通过该视图可查询到所有节点的内存报错信息,该报错信息跟日志中显示的内存报错信息相同。该视图8.3.0及以上集群版本支持。 该视图仅显示最近一次报错的集群信息,重复报错信息会进行覆盖,同一个query多次申请内存报错,信息不会进行更新。 表1 PGXC_MEMORY_DEBUG_INFO字段 名称 类型 描述 node_name text 实例名称,包含CN和DN。 query_id bigint 正在申请内存的查询ID。 memory_info text 当前实例的内存使用情况,主要包含: process_used_memory:GaussDB(DWS)进程所使用的内存大小。 max_dynamic_memory:最大动态内存。 dynamic_used_memory:已使用的动态内存。 dynamic_peak_memory:内存的动态峰值。 dynamic_used_shrctx:最大动态共享内存上下文。 dynamic_peak_shrctx:共享内存上下文的动态峰值。 shared_used_memory:已使用的共享内存。 cstore_used_memory:列存已使用的内存大小。 comm_used_memory:通信库已使用的内存大小。 comm_peak_memory:通信库的内存峰值。 other_used_memory:其他已使用的内存大小。 topsql_used_memory:topsql已使用内存大小 large_storage_memory:列存压缩和解压缩使用的内存大小。 os_totalmem:操作系统总内存大小。 os_freeemem:操作系统剩余内存大小。 summary text 包含实例上作业消耗的总估算内存和消耗的总实际内存大小。 abnormal_query text 使用内存异常的线程ID和queryid,包含两种情况: 当前使用内存最大的会话。 估算内存和实际使用内存差别最大的会话。 abnormal_memory text 使用内存异常的内存块,包含共享内存ctx使用最大的和通用内存ctx使用最大的 top_thread text 使用内存最多的三个线程信息: context name:表示正在使用内存的内存块。 contextlevel:表示ctx的等级。 sessType:表示ctx顶层节点的类型。 totalsize[274,13,260]MB,表示当前内存ctx的总内存,已释放内存和使用内存大小,单位为MB。 create_time timestamp with time zone 出现内存不足报错的时间点。 父主题: 系统视图
  • PG_JOB_INFO PG_JOB_INFO系统表记录定时任务的执行结果信息。该系统表的schema是dbms_om。 表1 dbms_om.pg_job_info字段 名称 类型 描述 job_id integer 任务ID。 job_db oid 任务所在数据库OID。 start_time timestamp with zone 任务执行开始时间。 status character(8) 任务执行状态。 end_time timestamp with zone 任务执行结束时间。 err_msg text 任务执行出错信息。 父主题: 系统表
  • 操作步骤 官方驱动安装。 下载官方驱动安装。 以mellanox为例,参考以下链接获取对应OS的5.4版本。 https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/ 安装驱动。 解压驱动包后,调用./mlnxofedinstall命令进行安装,如果提示OS版本不匹配,需执行以下命令重新打包安装包后,使用新的安装包安装。 1 ./mlnxofedinstall --force --without-fw-update --add-kernel-support 主机侧PFC配置。 root用户下执行以下命令。其中,enp1s0f0需替换成实际的RDMA网卡名称。 1 mlnx_qos -i enp1s0f0 --pfc 1,0,0,0,0,0,0,0 --trus dscp 命令PFC配置输出priority 0队列下均为打开状态,表示配置成功。 如果使用bond网络,需要对每个RDMA网卡都进行配置,bond网卡对应的物理网卡通过cat /proc/net/bonding/bond0命令查询。 mlnx_qos命令需要加入/etc/rc.d/rc.local进行持久化配置。 交换机侧PFC配置。 交换机配置需要由专业人员实施,避免破坏网络环境。 以下操作中的端口名称需替换成实际的RoCE网络使用的端口名称,需对每个端口都进行相同操作,或者把使用RoCE网络的端口组成port-group统一配置。 配置PFC协议。 1 2 3 4 sys interface 端口名称 dcb pfc enable mode manual commit 配置优先级。 1 2 3 dcb pfc priority 0 commit 配置ECN协议。 1 2 3 interface 端口名称 qos queue 0 ecn commit 持久化配置。 配置完成后使用dis cur命令可以查看配置是否生效。 1 dis cur | in pfc 确认无误后,使用save命令保存参数进行持久化配置。
  • 应用示例 使用PGXC_BULKLOAD_INFO视图查询互联互通导入业务: SELECT * FROM PGXC_BULKLOAD_INFO; datid | dbname | schemaname | nodename | username | application_name | client_addr | client_hostname | client_port | query_band | block_time | start_time | finish_time | statu s | queryid | query | session_id | address | direction | min_done_lines | max_done_lines | total_done_lines | min_done_by tes | max_done_bytes | total_done_bytes -------+----------+----------------+--------------+----------------+------------------+-------------+-----------------+-------------+------------+------------+-------------------------------+-------------------------------+------- ---+-------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------+-----------------------------------------+-------------------+---------------+----------------+----------------+------------------+------------ ----+----------------+------------------ 16134 | postgres | "$user",public | coordinator1 | interconn_user | gsql | | | -1 | | 0 | 2023-09-25 10:27:47.184696+08 | 2023-09-25 10:27:48.709665+08 | finish ed | 72339069014639035 | INSERT INTO interconn_user.lineitem_dest SELECT * FROM interconn_user.ft_lineitem_local; | 1695608841.140482657154648.coordinator1 | 10.90.45.56:63755 | gds from pipe | 19479 | 20971 | 60175 | 3251258 | 3500876 | 10038234 16134 | postgres | "$user",public | coordinator1 | interconn_user | interconnection | 10.90.45.56 | | 47668 | | 0 | 2023-09-25 10:27:47.256095+08 | 2023-09-25 10:27:48.582366+08 | finish ed | 72339069014639046 | INSERT INTO pg_temp.ft_lineitem_local_72339069014639035_wo SELECT l_orderkey, l_partkey, l_suppkey, l_linenumber, l_quantity, l_extendedprice, l_discount, l_tax, l_returnflag, l_linestatus, l_shipdate, l_c ommitdate, l_receiptdate, l_shipinstruct, l_shipmode, l_comment FROM public.lineitem; | 1695608867.140482657156768.coordinator1 | 10.90.45.56 | gds to pipe | 19476 | 20934 | 60175 | 3249308 | 3489789 | 10038234 (2 rows)
  • PGXC_POOLER_STATUS PGXC_POOLER_STATUS视图显示当前集群中各CN节点的pooler中缓存连接状态。该视图只能在CN上执行查询,显示所有CN的pooler模块的连接缓存信息。PGXC_POOLER_STATUS视图仅8.2.1.300及以上集群版本支持。 表1 PGXC_POOLER_STATUS字段 名称 类型 描述 coorname text CN节点名称。 database text 数据库名称。 user_name text 用户名。 tid bigint 连接CN的线程ID。 node_oid bigint 连接的实例节点OID。 node_name name 连接的实例节点名称。 in_use boolean 连接是否正被使用。 t(true):表示连接正在使用。 f(false):表示连接没有使用。 fdsock bigint 对端socket。 remote_pid bigint 对端线程号。 session_params text 由此连接下发的GUC会话参数。 父主题: 系统视图
  • 示例 创建表t1、t2、t3: 1 2 3 create table t1(a1 int,b1 int,c1 int,d1 int); create table t2(a2 int,b2 int,c2 int,d2 int); create table t3(a3 int,b3 int,c3 int,d3 int); 原语句为: 1 explain select * from t3, (select a1,b2,c1,d2 from t1,t2 where t1.a1=t2.a2) s1 where t3.b3=s1.b2; 上述查询中,可以使用以下两种方式禁止子查询s1进行提升: 方式一: 1 explain select /*+ no merge(s1) */ * from t3, (select a1,b2,c1,d2 from t1,t2 where t1.a1=t2.a2) s1 where t3.b3=s1.b2; 方式二: 1 explain select * from t3, (select /*+ no merge */ a1,b2,c1,d2 from t1,t2 where t1.a1=t2.a2) s1 where t3.b3=s1.b2; 提升后效果:
  • 查询hudi外表属性(hoodie.properties) 查询OBS上hudi数据的hoodie.properties: 1 SELECT * FROM hudi_get_options('SCHEMA.FOREIGN_TABLE'); 示例:查询当前schema下的OBS外表rtd_mfdt_int_unit_ft的hudi属性: 1 SELECT * FROM hudi_get_options('rtd_mfdt_int_unit_ft');
  • 增量查询 针对hudi增量查询功能,可以通过设置增量查询参数实现增量查询。 1 2 3 4 SET hoodie.SCHEMA.FOREIGN_TABLE.consume.mode=incremental; SET hoodie.SCHEMA.FOREIGN_TABLE.consume.start.timestamp=起始时间戳; SET hoodie.SCHEMA.FOREIGN_TABLE.consume.ending.timestamp=结束时间戳; SELECT * FROM SCHEMA.FOREIGN_TABLE;
  • 查询hudi外表最大时间线 查询OBS上hudi数据最大时间线,即最新的提交记录: 1 SELECT * FROM hudi_get_max_commit('SCHEMA.FOREIGN_TABLE'); 示例:查询当前schema下的OBS外表rtd_mfdt_int_unit_ft的最大时间线: 1 SELECT * FROM hudi_get_max_commit('rtd_mfdt_int_unit_ft');
  • 创建Hudi任务 迁移场景 如果GaussDB(DWS)表已经通过CDL导入数据,改为用SQL on Hudi方式迁移数据。或者使用 CDM 做全量初始化后,继续使用SQL on Hudi方式同步增量数据。 创建hudi.hudi_sync_state同步状态表,需要管理员权限。 1 SELECT pg_catalog.create_hudi_sync_table(); 通常情况下,每个数据库中只创建一次hudi.hudi_sync_state。 设置CDL的同步进度,用户需要有同步目标表的INSERT和UPDATE权限、HUDI外表的SELECT权限,否则无法正常设置同步进度。 1 SELECT hudi_set_sync_commit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE', 'LATEST_COMMIT'); 其中: SCHEMA.TABLE,表示同步数据的目标表名,带schema。 SCHEMA.FOREIGN_TABLE,表示OBS外表命名,带schema。 LATEST_COMMIT,表示已同步的Hudi数据时间截点。 示例:目标表public.in_rel,已经同步hudi的数据到20220913152131,切换到SQL on Hudi方式从OBS外表hudi_read1中继续导出数据。 1 SELECT hudi_set_sync_commit('public.in_rel', 'public.hudi_read1', '20220913152131'); 提交Hudi同步任务。 1 SELECT hudi_sync_task_submit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE'); 例如:目标表public.in_rel,切换到SQL on Hudi方式从OBS外表hudi_read1中继续导出数据。 1 SELECT hudi_sync_task_submit('public.in_rel', 'public.hudi_read1');
  • 删除Hudi同步任务 查询Hudi任务,获取task_id,删除Hudi同步任务。 1 SELECT pg_task_remove('task_id'); 示例: 删除task_id为64479410-a04c-0700-d150-3037d700fffe的同步任务。 1 SELECT pg_task_remove('64479410-a04c-0700-d150-3037d700fffe');
  • 编写DWS表定义 非bucket表 复制 MRS 表所有列的定义,做适当的类型转换以适配DWS语法,创建OBS外表: 1 2 3 4 5 6 7 8 9 10 11 12 CREATE FOREIGN TABLE rtd_mfdt_int_currency_ft( _hoodie_commit_time text, _hoodie_commit_seqno text, _hoodie_record_key text, _hoodie_partition_path text, _hoodie_file_name text, ... )SERVER obs_server OPTIONS ( foldername '/erpgc-obs-test-01/s000/sbi_fnd/rtd_mfdt_int_currency_t/', format 'hudi', encoding 'utf-8' )distribute by roundrobin; 其中,foldername为hudi数据在OBS上存储路径,对应MRS中Spark-sql表定义中的LOCATION,末尾要以“/”结尾。 bucket表 复制MRS表所有列的定义,做适当的类型转换以适配DWS语法,创建OBS外表,指定hash分布方式: 1 2 3 4 5 6 7 8 9 10 11 12 CREATE FOREIGN TABLE rtd_mfdt_int_currency_ft( _hoodie_commit_time text, _hoodie_commit_seqno text, _hoodie_record_key text, _hoodie_partition_path text, _hoodie_file_name text, ... )SERVER obs_server OPTIONS ( foldername '/erpgc-obs-test-01/s000/sbi_fnd/rtd_mfdt_int_currency_t/', format 'hudi', encoding 'utf-8' )distribute by hash(bk_col1,bk_col2...); 其中,foldername为hudi数据在OBS上存储路径,对应MRS中Spark-sql表定义中的LOCATION,末尾要以“/”结尾; distribute by为bucket表的分布列,与foldername/.hoodie/hoodie.index.properties文件中的hoodie.bucket.index.hash.field属性值保持一致。
  • 实时视图与增量视图查询 GaussDB(DWS)提供了类似spark-sql风格的表级参数,用于支持实时视图和增量视图。 具体参数说明如下,其中SCHEMA.FOREIGN_TABLE需要替换为实际的schema和外表名。 表1 实时视图与增量视图查询的参数 参数 取值 说明 hoodie.SCHEMA.FOREIGN_TABLE.consume.mode SNAPSHOT 查询实时视图。 INCREMENTAL 查询增量视图。 hoodie.SCHEMA.FOREIGN_TABLE.consume. start.timestamp hudi时间戳 指定增量同步的起始commit。 hoodie.SCHEMA.FOREIGN_TABLE.consume. ending.timestamp hudi时间戳 指定增量同步的结束commit,不指定则采用最新commit。 以上参数支持使用set命令设置,并且仅在当前SESSION中有效;使用reset命令恢复缺省值。 可以通过系统函数pg_catalog.pg_show_custom_settings()来查询相关参数的设置详情。 查询MOR表的增量视图时,需要使用where条件过滤_hoodie_commit_time字段,避免读取到未合并的不符合条件的log文件数据;COW表无需该操作。
  • Hudi外表信息查询与自动同步任务 GaussDB(DWS)提供一系列系统函数来实现Hudi外表信息获取、创建Hudi自动同步任务等功能。其中Hudi自动同步任务实现了从Hudi外表周期性同步数据到GaussDB(DWS)内表功能。 表2 Hudi系统函数 序号 名称 类型 功能 1 pg_show_custom_settings() 内置函数 查询HUDI外表参数设置详情。 2 hudi_get_options(regclass) 内置函数 查询HUDI外表的属性信息(hoodie.properties)。 3 hudi_get_max_commit(regclass) 内置函数 获取当前HUDI外表最新commit的时间戳。 4 hudi_sync_task_submit(regclass, regclass) 内置函数 提交HUDI自动同步任务。 hudi_sync_task_submit(regclass, regclass, text, text) 5 hudi_show_sync_state() 内置函数 获取HUDI自动同步任务的同步状态。 6 hudi_sync(regclass, regclass) 存储过程 HUDI自动同步任务调用入口。 7 hudi_sync_custom(regclass, regclass, text) 存储过程 HUDI自动同步任务调用入口,支持用户自定义目标表和数据源表的字段同步对应关系。 8 hudi_set_sync_commit(regclass, regclass, text) 内置函数 设置HUDI自动同步任务首次同步的起点时间戳,避免在已经同步了部分数据的情况下,重新同步已有数据。 hudi_set_sync_commit(text, text) 设置HUDI自动同步任务下一次同步的起点时间戳,可以用于重复同步历史数据或者跳过某些数据。
  • Hudi简介 Apache Hudi(发音Hoodie)表示Hadoop Upserts Deletes and Incrementals。用来管理Hadoop大数据体系下存储在DFS上大型分析数据集。 Hudi不是单纯的数据格式,而是一套数据访问方法(类似GaussDB(DWS)存储的access层),在Apache Hudi 0.9版本,大数据的Spark,Flink等组件都单独实现各自客户端。Hudi的逻辑存储如下图所示: 写入模式 COW:写时复制,适合更新少的场景。 MOR:读时复制,对于UPDATE&DELETE增量写delta log文件,分析时进行base和delta log文件合并,异步compaction合并文件。 存储格式 index:对主键进行索引,默认是file group级别的bloomfilter。 data files:base file + delta log file(主要面向对base file的update&delete)。 timeline metadata:版本log的管理。 视图 读优化视图:读取Compaction后生成的base file,未Compaction数据时效性有一定延迟(高效读取)。 实时视图:读取最新的数据,在读取时进行Base file和Delta file合并(频繁update场景)。 增量视图:类似CDC方式持续读取增量写入Hudi的数据(流批一体)。 父主题: SQL on Hudi
  • PG_MATVIEW PG_MATVIEW系统表提供获取当前节点的物化视图信息。 表1 PG_MATVIEW字段 字段名称 字段类型 描述 mvid oid 物化视图OID。 build_mode char 物化视图的build模式。 'd':代表deferred,表示创建物化视图时需要等到第一次refresh时才会包含数据。 'i':代表immediate,表示创建物化视图时即包含最新数据。 refresh_method char 'c' :表示完全刷新。 refresh_mode char 物化视图的刷新模式。 'd':表示手动刷新。 'a':表示物化视图一直是活跃的,后台会自动刷新。 rewrite_enable boolean 是否支持物化视图的查询重写。 active boolean 物化视图是否需要刷新。 relnum Int 物化视图基表个数。 start_time timestamptz 物化视图第一次定时刷新的时间,为空则第一次刷新时间是当前时间+interval。 interval interval 物化视图定时刷新时间的间隔。 refresh_time timestamptz 物化视图的最后一次刷新时间。 refresh_finish_time timestamptz 物化视图的最后一次刷新结束时间。 父主题: 系统表
  • GS_USER_MONITOR GS_USER_MONITOR视图显示所有用户作业运行信息及资源使用信息,仅支持CN上查询。该视图仅8.2.1.100及以上集群版本支持。 表1 GS_USER_MONITOR字段 名称 类型 描述 usename name 用户名称。 rpname name 用户关联的资源池名称。 nodegroup name 资源池所属逻辑集群的名称,默认集群显示“installation”。 session_count bigint 该用户发起的会话数量,包含IDLE和ACTIVE会话。 active_count bigint 该用户发起的活跃会话数量,即正在执行查询的会话数量。 global_wait bigint 该用户执行的所有作业中,因单CN上并发超max_active_statements引起排队的作业数。 fast_run bigint 该用户执行的所有作业中,正在资源池快车道运行的作业数。 fast_wait bigint 该用户执行的所有作业中,在资源池快车道排队的作业数。 slow_run bigint 该用户执行的所有作业中,正在资源池慢车道运行的作业数。 slow_wait bigint 该用户执行的所有作业中,在资源池慢车道排队的作业数。 used_mem bigint 用户在所有DN上已用内存的平均值,单位:MB。 estimate_mem bigint 用户正在运行的作业估算内存之和,单位:MB。 used_cpu double precision 用户在所有DN上使用CPU核数的平均值,单个节点上包含多个DN时,用户在单节点上占用的CPU核数需要乘以DN数。 read_speed bigint 用户在所有DN上逻辑IO读速率的平均值,单位:KB/s。 write_speed bigint 用户在所有DN上逻辑IO写速率的平均值,单位:KB/s。 send_speed bigint 用户在所有DN上网络发送速率的平均值,单位:KB/s。 recv_speed bigint 用户在所有DN上网络接收速率的平均值,单位:KB/s。 used_space bigint 用户永久表已使用的空间大小,单位:KB。 space_limit bigint 用户永久表可使用的空间大小上限,单位:KB。-1为不限制。 used_temp_space bigint 用户临时表已使用的空间大小,单位:KB。 temp_space_limit bigint 用户临时表可使用的空间大小上限,单位:KB。-1为不限制。 used_spill_space bigint 用户中间结果集落盘已使用的空间大小,单位:KB。 spill_space_limit bigint 用户中间结果集落盘可使用的空间大小上限,单位:KB。-1为不限制。 父主题: 系统视图
  • GS_RESPOOL_MONITOR GS_RESPOOL_MONITOR视图显示所有资源池作业运行信息及资源使用信息,仅支持CN上查询。该视图仅8.2.1.100及以上集群版本支持。 表1 GS_RESPOOL_MONITOR字段 名称 类型 描述 rpname name 资源池名称。 nodegroup name 资源池所属逻辑集群的名称,默认集群显示“installation”。 cn_count bigint 集群包含的CN数量,多CN环境下用于判断单CN管控结果是否合理。 short_acc boolean 资源池是否开启短查询加速。 session_count bigint 关联该资源池的会话数量,即关联该资源池的用户发起的会话数量,包含IDLE和ACTIVE会话。 active_count bigint 关联该资源池的活跃会话数量,即正在执行查询的会话数量。 global_wait bigint 关联该资源池的所有作业中,因单CN上并发超max_active_statements引起排队的作业数。 fast_run bigint 关联该资源池的所有作业中,正在资源池快车道运行的作业数。 fast_wait bigint 关联该资源池的所有作业中,在资源池快车道排队的作业数。 fast_limit bigint 资源池快车道作业并发上限。 slow_run bigint 关联该资源池的所有作业中,正在资源池慢车道运行的作业数。 slow_wait bigint 关联该资源池的所有作业中,在资源池慢车道排队的作业数。 slow_limit bigint 资源池慢车道作业并发上限。 used_mem text 资源池在所有DN上已用内存的平均值,显示结果已使用pg_size_pretty格式化。 estimate_mem text 资源池正在运行的作业估算内存之和,显示结果已使用pg_size_pretty格式化。 mem_limit text 资源池可用内存的上限,显示结果已使用pg_size_pretty格式化。 query_mem_limit name 资源池内单个查询可以使用的内存上限,主要用于限制查询估算内存,防止估算内存过大导致异常排队;通过估算内存限制查询实际使用内存,显示结果已使用pg_size_pretty格式化。 used_cpu double precision 资源池在所有DN上占用CPU核数的平均值;CPU隔离以节点和资源池为单位,单个节点上包含多个DN时,资源池在单节点上占用的CPU核数需要乘以DN数。 cpu_limit double precision 资源池在所有节点上可用CPU上限的平均值,CPU配额管控情况下为GaussDB全部可用CPU核数,CPU限额管控情况下为关联控制组的可用CPU核数。 read_speed text 资源池在所有DN上逻辑IO读速率的平均值,显示结果已使用pg_size_pretty格式化。 write_speed text 资源池在所有DN上逻辑IO写速率的平均值,显示结果已使用pg_size_pretty格式化。 send_speed text 资源池在所有DN上网络发送速率的平均值,显示结果已使用pg_size_pretty格式化。 recv_speed text 资源池在所有DN上网络接收速率的平均值,显示结果已使用pg_size_pretty格式化。 父主题: 系统视图
  • GS_QUERY_MONITOR GS_QUERY_MONITOR视图显示正在执行的查询运行/排队信息及资源使用信息,只显示排队和正在运行的作业,仅支持在CN上查询使用,仅显示主语句监控信息。该视图仅8.2.1.100及以上集群版本支持。 表1 GS_QUERY_MONITOR视图字段 名称 类型 描述 usename name 执行该查询的用户名称。 nodename name 执行该查询的CN名称。 nodegroup name 执行该查询的集群名称,默认集群显示“installation”。 rpname name 该查询关联的资源池名称。 priority name 查询当前优先级,包含Rush/High/Medium/Low四个优先级。 xact_start timestamp 查询所属事务的开启时间。 query_start timestamp 查询执行开始时间。 block_time bigint 作业累积已排队时间,存储过程、多语句可能多次排队。单位:秒。 duration bigint 作业已运行时间,不包含排队时间。单位:秒。 query_band text 显示作业标识,可通过GUC参数query_band设置,默认为空。 attribute text 作业属性: Simple:简单作业; Complicated:复杂作业。 作业进入资源池管控前无意义,只有进入或已完成资源池管控该字段才有意义。 lane text 作业排队/执行所处的资源池车道: fast:快车道; slow:慢车道。 作业进入资源池管控前无意义,只有进入或已完成资源池管控该字段才有意义。 status text 作业当前状态,包含pending/running两种可能状态。 queue text 作业排队信息: None:作业正在运行; Global:作业在CN全局并发队列排队; Respool:作业在资源池队列排队; CCN:作业在CCN排队。 used_mem integer 作业在所有DN上内存峰值的最大值,单位:MB。 estimate_mem integer 作业估算内存,单位:MB。 used_cpu double precision 作业开始运行至今,占用CPU核数的平均值。 read_speed integer 作业当前在所有DN上逻辑IO读速率的平均值,单位:KB/s。 write_speed integer 作业当前在所有DN上逻辑IO写速率的平均值,单位:KB/s。 send_speed integer 作业开始运行至今,在所有DN上网络发送速率的平均值,单位:KB/s。 recv_speed integer 作业开始运行至今,在所有DN上网络接收速率的平均值,单位:KB/s。 dn_count bigint 执行该作业的DN数量。 stream_count bigint 作业在所有DN上stream线程的数量之和。 pid bigint 后端线程ID。 lwtid integer 后台线程的轻量级线程号。 query_id bigint 查询ID。 unique_sql_id bigint 归一化的Unique SQL ID。 query text 正在执行的查询。 父主题: 系统视图
  • PGXC_STAT_OBJECT PGXC_STAT_OBJECT视图显示集群中所有实例的表的统计信息和autovacuum效率信息。该系统视图仅8.2.1及以上集群版本支持。 表1 PGXC_STAT_OBJECT字段 名称 类型 引用 描述 nodename name - 节点名称。 datname name - 表所在数据库名称。 relnamespace name - 表所在schema名称。 relname name - 表名。 partname name - 分区表的分区名。 databaseid oid PG_DATABASE.oid 数据库OID。 relid oid PG_CLASS.oid 表OID,分区表为主表OID。 partid oid PG_PARTITION .oid 分区OID,普通表此列为0。 numscans bigint - 启动顺序扫描的次数。 tuples_returned bigint - 顺序扫描抓取的可见元组条数。 tuples_fetched bigint - 抓取的可见元组条数。 tuples_inserted bigint - 插入条数。 tuples_updated bigint - 更新条数。 tuples_deleted bigint - 删除条数。 tuples_hot_updated bigint - HOT更新条数。 n_live_tuples bigint - 可见元组数。 last_autovacuum_begin_n_dead_tuple bigint - Autovacuum执行前删除元组数。 n_dead_tuples bigint - Autovacuum成功后删除元组数。 changes_since_analyze bigint - Analyze后最近一次数据修改时间。 blocks_fetched bigint - 选中的页面数。 blocks_hit bigint - 扫描过的页面数。 cu_mem_hit bigint - CU内存命中次数。 cu_hdd_sync bigint - 从磁盘同步读取CU次数。 cu_hdd_asyn bigint - 从磁盘异步读取CU次数。 data_changed_timestamp timestamp with time zone - 最近一次数据修改时间。 data_access_timestamp timestamp with time zone - 表的最后一次访问时间。 analyze_timestamp timestamp with time zone - 最近一次analyze时间。 analyze_count bigint - Analyze总次数。 autovac_analyze_timestamp timestamp with time zone - 最近一次autoanalyze时间。 autovac_analyze_count bigint - Autoanalyze总次数。 vacuum_timestamp timestamp with time zone - 最近一次vacuum的时间。 vacuum_count bigint - vacuum总次数。 autovac_vacuum_timestamp timestamp with time zone - 最近一次autovacuum时间。 autovac_vacuum_count bigint - Autovacuum总次数。 autovacuum_success_count bigint - 成功执行的autovacuum总次数。 last_autovacuum_time_cost bigint - 最近一次成功的autovacuum花费时间,单位:微秒。 avg_autovacuum_time_cost bigint - 成功执行autovacuum的平均执行时间,单位:微秒。 last_autovacuum_failed_count bigint - 从上一次autovacuum成功到现在,autovacuum总失败次数。 last_autovacuum_trigger smallint - 最近一次autovacuum触发方式,用于辅助维护人员进行vacuum情况的判断。 last_autovacuum_oldestxmin bigint - 最近一次autovacuum成功执行后的oldestxmin。如果表级oldestxmin特性开启,此字段记录此表最近一次(auto)vacuum使用的oldestxmin值。 last_autovacuum_scan_pages bigint - 最近一次autovacuum扫描的页面数(仅针对行存表)。 last_autovacuum_dirty_pages bigint - 最近一次autovacuum修改的页面数(仅针对行存表)。 last_autovacuum_clear_deadtuples bigint - 最近一次autovacuum清理的deadtuple数(仅针对行存表)。 sum_autovacuum_scan_pages bigint - 从数据库初始化开始到现在,autovacuum累计扫描的页面数(仅针对行存表)。 sum_autovacuum_dirty_pages bigint - 从数据库初始化开始到现在,autovacuum累计修改的页面数(仅针对行存表)。 sum_autovacuum_clear_deadtuples bigint - 从数据库初始化开始到现在,autovacuum累计清理的deadtuple数(仅针对行存表)。 last_autovacuum_begin_cu_size bigint - 最近一次autovacuum前的CU文件大小(仅针对列存表)。 last_autovacuum_cu_size bigint - 最近一次autovacuum后的CU文件大小(仅针对列存表)。 last_autovacuum_rewrite_size bigint - 最近一次autovacuum重写的列存文件大小(仅针对列存表)。 last_autovacuum_clear_size bigint - 最近一次autovacuum清理的列存文件大小(仅针对列存表)。 last_autovacuum_clear_cbtree_tuples bigint - 最近一次autovacuum清理的cbtree tuple数(仅针对列存表)。 sum_autovacuum_rewrite_size bigint - 从数据库初始化开始到现在,autovacuum累计重写的列存文件大小(仅针对列存表)。 sum_autovacuum_clear_size bigint - 从数据库初始化开始到现在,autovacuum累计清理的列存文件大小(仅针对列存表)。 sum_autovacuum_clear_cbtree_tuples bigint - 从数据库初始化开始到现在,autovacuum累计清理的cbtree tuple数(仅针对列存表)。 last_autovacuum_csn bigint - 如果表级oldestxmin特性打开,此字段记录此表最近一次(auto)vacuum使用的oldestxmin值对应的 CS N值。 last_reference_timestamp timestamp with time zone - 表的最后一次访问时间(该字段仅8.3.0及以上集群版本支持)。 对应PG_STAT_OBJECT中data_changed_time_stamp(最后一次修改时间)和data_access_timestamp(最后一次访问时间)两者中距现在最近的时间。 extra1 bigint - 预留字段1。 extra2 bigint - 预留字段2。 extra3 bigint - 预留字段3。 extra4 bigint - 预留字段4。 父主题: 系统视图
共100000条