华为云用户手册

  • 编写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属性值保持一致。
  • 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自动同步任务下一次同步的起点时间戳,可以用于重复同步历史数据或者跳过某些数据。
  • 实时视图与增量视图查询 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简介 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。 父主题: 系统视图
  • PG_STAT_OBJECT PG_STAT_OBJECT系统表存储当前实例上表的统计信息和autovacuum效率信息,并且对于databaseid, relid, partid字段创建索引。该系统表的更新受enable_pg_stat_object参数控制。该系统表仅8.2.1及以上集群版本支持。 表1 PG_STAT_OBJECT字段 名称 类型 引用 描述 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值对应的CSN值。 last_automerge_timestamp timestamp with time zone - 上次表发生automerge的时间(目前仅针对HStore_opt表),该字段仅9.1.0.100及以上版本支持。 last_automerge_time_cost bigint - 上次表发生automerge的耗时(目前仅针对HStore_opt表),该字段仅9.1.0.100及以上版本支持。 last_automerge_count bigint - 上次表automerge的记录数(目前仅针对HStore_opt表),该字段仅9.1.0.100及以上版本支持。 extra1 bigint - 预留字段1。 父主题: 系统表
  • SHOW_ALL_TSC_INFO 查询所有节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • SHOW_TSC_INFO 查询当前节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • GET_TSC_INFO 重新获取当前节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • GET_ALL_TSC_INFO 重新获取所有节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • 使用场景 查询全库所有用户表的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null and a.schema not in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob') group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库所有表(用户表+系统表)的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库系统表信息: 1 select * from pgxc_stat_table_dirty where schema in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob');
  • 应用示例 查看所有订阅: 1 2 3 4 5 SELECT * FROM pg_subscription; subdbid | subname | subowner | subenabled | subconninfo | subslotname | subpublications ---------+---------+----------+------------+------------------------------------------------------------------------------------------+-------------+----------------- 15992 | mysub | 10 | t | host=1.1.1.1,2.2.2.2 port=10000,20000 dbname=postgres user=repusr1 password=password_123 | mysub | {mypub} (1 row)
  • 应用示例 查看所有发布: 1 2 3 4 5 SELECT * FROM pg_publication; pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate ---------+----------+--------------+-----------+-----------+-----------+------------- mypub | 10 | t | t | t | t | t (1 row)
  • 应用示例 在容灾集群上查看备表回放状态: 1 2 3 4 5 SELECT * FROM pg_fine_dr_info; relid | lastcsn | lastxmin | lastxmax | laststarttime | lastendtime -------+---------+----------+----------+-------------------------------+------------------------------- 21132 | 1251610 | 1251609 | 1251611 | 2023-01-04 20:51:58.375136+08 | 2023-01-04 20:51:58.393986+08 (1 row)
  • 应用示例 查询集群当前正在执行的语句,以及这些语句分别产生的wal日志的总量和平均速率、数据页总量和平均速率,以及这些信息各自DN上的分布情况。 1 2 3 4 5 6 7 8 9 10 SELECT * FROM PGXC_STAT_WAL; query_id | query_start | global_wal | global_avg_wal_speed | global_datapage | global_avg_datapage_speed | min_wal_node | min_wal | max_wal_node | max_wal | min_datapage_node | min_data_page | max_datapage_node | max_data_page | avg_wal_per_node | avg_datapage_per_node | query -------------------+-------------------------------+------------+----------------------+-----------------+---------------------------+--------------+----------+--------------+----------+-------------------+---------------+-------------------+---------------+------------------+- ----------------------+---------------------------------------------- 72620543991351767 | 2022-11-10 16:49:47.743291+08 | 7579052 | 419000 | 284057600 | 15740000 | datanode1 | 7579052 | datanode1 | 7579052 | datanode1 | 284057600 | datanode1 | 284057600 | 7579052 | 284057600 | insert into mpptest3 select * from mpptest3; 72620543991351781 | 2022-11-10 16:50:00.616697+08 | 55022176 | 10638000 | 0 | 0 | datanode1 | 55022176 | datanode1 | 55022176 | datanode1 | 0 | datanode1 | 0 | 55022176 | 0 | insert into mpptest1 select * from mpptest1; (2 rows)
  • PGXC_WLM_USER_RESOURCE_HISTORY PGXC_WLM_USER_RESOURCE_HISTORY视图显示所有用户在对应实例上资源消耗的历史信息。该视图仅8.2.0及以上集群版本支持。 表1 PGXC_WLM_USER_RESOURCE_HISTORY字段 名称 类型 描述 nodename name 实例名称,包含CN和DN。 username text 用户名。 timestamp timestamp with time zone 时间戳。 used_memory integer 正在使用的内存大小,单位MB。 DN:显示当前DN上对应用户正在使用的内存大小。 CN:显示所有DN上对应用户正在使用的内存累加和。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 DN:显示当前DN上对应用户可以使用的内存大小。 CN:显示所有DN上对应用户可以使用的内存大小之和。 used_cpu double precision 正在使用的CPU核数(仅统计非默认资源池上复杂作业的CPU使用情况,且该值为相关控制组的CPU使用统计值)。 DN:显示当前DN上对应用户正在使用的CPU核数。 CN:显示所有DN上对应用户正在使用的CPU核数之和。 total_cpu integer 用户关联控制组的CPU核数总和。 DN:显示当前DN上对应用户能够使用的CPU核数。 CN:显示所有DN上对应用户能够使用的CPU核数之和。 used_space bigint 已使用的永久表存储空间大小,单位KB。 DN:显示当前DN上对应用户已使用的永久表存储空间大小。 CN:显示所有DN上对应用户已使用的永久表存储空间大小之和。 total_space bigint 可使用的永久表存储空间大小,单位KB,值为-1表示未限制永久表存储空间。 DN:显示当前DN上对应用户可使用的永久表存储空间大小。 CN:显示所有DN上对应用户可使用的永久表存储空间大小之和。 used_temp_space bigint 已使用的临时表存储空间大小,单位KB。 DN:显示当前DN上对应用户已使用的临时表存储空间大小。 CN:显示所有DN上对应用户已使用的临时表存储空间大小之和。 total_temp_space bigint 可使用的临时表存储空间大小,单位KB,值为-1表示未限制临时表存储空间。 DN:显示当前DN上对应用户可使用的临时表存储空间大小 CN:显示所有DN上对应用户可使用的临时表存储空间大小之和 used_spill_space bigint 已使用的算子落盘空间大小,单位KB。 DN:显示当前DN上对应用户已使用的算子落盘空间大小。 CN:显示所有DN上对应用户已使用的算子落盘空间大小之和。 total_spill_space bigint 可使用的算子落盘空间大小,单位KB,值为-1表示未限制算子落盘空间。 DN:显示当前DN上对应用户可使用的算子落盘空间大小。 CN:显示所有DN上对应用户可使用的算子落盘空间大小之和。 read_kbytes bigint CN:过去5秒内,该用户在所有DN上复杂作业read的字节总数,单位KB。 DN:实例启动至当前时间为止,该用户复杂作业read的字节总数,单位KB。 write_kbytes bigint CN:过去5秒内,该用户在所有DN上复杂作业write的字节总数,单位KB。 DN:实例启动至当前时间为止,该用户复杂作业write的字节总数,单位KB。 read_counts bigint CN:过去5秒内,该用户在所有DN上复杂作业read的次数之和。 DN:实例启动至当前时间为止,该用户复杂作业read的次数之和。 write_counts bigint CN:过去5秒内,该用户在所有DN上复杂作业write的次数之和。 DN:实例启动至当前时间为止,该用户复杂作业write的次数之和。 read_speed double precision CN:过去5秒内,该用户在单个DN上复杂作业read平均速率。单位KB/s。 DN:过去5秒内,该用户在该DN上复杂作业read平均速率。单位KB/s。 write_speed double precision CN:过去5秒内,该用户在单个DN上复杂作业write平均速率。单位KB/s。 DN:过去5秒内,该用户在该DN上复杂作业write平均速率。单位KB/s。 send_speed double precision CN:一个5s监控周期内,该用户在所有DN上网络发送平均速率之和。单位KB/s。 DN:一个5s监控周期内,该用户在该DN上网络发送平均速率。单位KB/s。 recv_speed double precision CN:一个5s监控周期内,该用户在所有DN上网络接收平均速率之和。单位KB/s。 DN:一个5s监控周期内,该用户在该DN上网络接收平均速率。单位KB/s。 父主题: 系统视图
  • PGXC_TOTAL_USER_RESOURCE_INFO PGXC_TOTAL_USER_RESOURCE_INFO视图显示所有实例上用户实时资源消耗信息。该视图仅8.2.0及以上集群版本支持。 表1 PGXC_TOTAL_USER_RESOURCE_INFO字段 名称 类型 描述 nodename name 实例名称,包含CN和DN。 username name 用户名。 used_memory integer 正在使用的内存大小,单位MB。 DN:显示当前DN上对应用户正在使用的内存大小。 CN:显示所有DN上对应用户正在使用的内存累加和。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 DN:显示当前DN上对应用户可以使用的内存大小。 CN:显示所有DN上对应用户可以使用的内存大小之和。 used_cpu double precision 正在使用的CPU核数(仅统计非默认资源池上复杂作业的CPU使用情况,且该值为相关控制组的CPU使用统计值)。 DN:显示当前DN上对应用户正在使用的CPU核数。 CN:显示所有DN上对应用户正在使用的CPU核数之和。 total_cpu integer 用户关联控制组的CPU核数总和。 DN:显示当前DN上对应用户能够使用的CPU核数。 CN:显示所有DN上对应用户能够使用的CPU核数之和。 used_space bigint 已使用的永久表存储空间大小,单位KB。 DN:显示当前DN上对应用户已使用的永久表存储空间大小。 CN:显示所有DN上对应用户已使用的永久表存储空间大小之和。 total_space bigint 可使用的永久表存储空间大小,单位KB,值为-1表示未限制永久表存储空间。 DN:显示当前DN上对应用户可使用的永久表存储空间大小。 CN:显示所有DN上对应用户可使用的永久表存储空间大小之和。 used_temp_space bigint 已使用的临时表存储空间大小,单位KB。 DN:显示当前DN上对应用户已使用的临时表存储空间大小。 CN:显示所有DN上对应用户已使用的临时表存储空间大小之和。 total_temp_space bigint 可使用的临时表存储空间大小,单位KB,值为-1表示未限制临时表存储空间。 DN:显示当前DN上对应用户可使用的临时表存储空间大小。 CN:显示所有DN上对应用户可使用的临时表存储空间大小之和。 used_spill_space bigint 已使用的算子落盘空间大小,单位KB。 DN:显示当前DN上对应用户已使用的算子落盘空间大小 CN:显示所有DN上对应用户已使用的算子落盘空间大小之和 total_spill_space bigint 可使用的算子落盘空间大小,单位KB,值为-1表示未限制算子落盘空间。 DN:显示当前DN上对应用户可使用的算子落盘空间大小。 CN:显示所有DN上对应用户可使用的算子落盘空间大小之和。 read_kbytes bigint CN:过去5秒内,该用户在所有DN上逻辑读的字节总数。单位KB。 DN:实例启动至当前时间为止,该用户逻辑读的字节总数。单位KB。 write_kbytes bigint CN:过去5秒内,该用户在所有DN上逻辑写的字节总数。单位KB。 DN:实例启动至当前时间为止,该用户逻辑写的字节总数。单位KB。 read_counts bigint CN:过去5秒内,该用户在所有DN上逻辑读的次数之和。 DN:实例启动至当前时间为止,该用户逻辑读的次数之和。 write_counts bigint CN:过去5秒内,该用户在所有DN上逻辑写的次数之和。 DN:实例启动至当前时间为止,该用户逻辑写的次数之和。 read_speed double precision CN:过去5秒内,该用户在单个DN上逻辑读平均速率。单位KB/s。 DN:过去5秒内,该用户在该DN上逻辑读平均速率。单位KB/s。 write_speed double precision CN:过去5秒内,该用户在单个DN上逻辑写平均速率。单位KB/s。 DN:过去5秒内,该用户在该DN上逻辑写平均速率。单位KB/s。 send_speed double precision CN:过去5秒内,该用户在所有DN上网络发送平均速率之和。单位KB/s。 DN:过去5秒内,该用户在该DN上网络发送平均速率。单位KB/s。 recv_speed double precision CN:过去5秒内,该用户在所有DN上网络接收平均速率之和。单位KB/s。 DN:过去5秒内,该用户在该DN上网络接收平均速率。单位KB/s。 父主题: 系统视图
  • 应用示例 查询当前视图,统计OBS写流量和平均写带宽,统计结果按10分钟聚集。 1 2 3 4 5 6 7 8 9 10 select * from gs_obs_write_traffic; nodename | hostname | traffic_mb | bandwidth_mb_per_s | reqcount | logtime --------------+------------------+----------------------+---------------------+----------+------------------------ dn_1 | rhel_10_90_45_56 | .000738143920898438 | .000289970820362525 | 12 | 2022-10-24 16:10:00+08 dn_1 | rhel_10_90_45_56 | .000354766845703125 | .000386063466694153 | 7 | 2022-10-24 18:50:00+08 dn_1 | rhel_10_90_45_56 | 9.34600830078125e-05 | .000143659648687162 | 2 | 2022-11-07 09:20:00+08 dn_1 | rhel_10_90_45_56 | 4.10079956054688e-05 | .000186667253592502 | 1 | 2022-11-07 09:30:00+08 dn_1 | rhel_10_90_45_56 | 2048.17834663391 | 27.2766632219637 | 2 | 2022-11-22 16:10:00+08 dn_1 | rhel_10_90_45_56 | 3747.23722648621 | 28.0842938534546 | 4 | 2022-11-22 16:20:00+08 (6 row)
  • 应用示例 查询当前视图,统计OBS读流量和平均读带宽,统计结果按10分钟聚集。 1 2 3 4 5 select * from gs_obs_read_traffic; nodename | hostname | traffic_mb | bandwidth_mb_per_s | reqcount | logtime ----------+------------------+------------------+--------------------+----------+------------------------ dn_1 | rhel_10_90_45_56 | 101.959338188171 | 5.14830159670447 | 23 | 2022-11-26 09:50:00+08 (1 row)
  • 应用示例 使用PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS视图查询表的倾斜状况总览,再使用gs_table_distribution(schemaname text, tablename text)函数获取指定表在各个节点所占磁盘空间大小的分布情况。 使用PGXC_WLM_TABLE_DISTRIBUTION_SKEWNESS视图查询表的倾斜状况总览。 tpcds_col=# select * from pgxc_wlm_table_distribution_skewness; 查询结果如下: 显示表dbgen_version的数据倾斜程度较为严重。 使用gs_table_distribution(schemaname text, tablename text)函数查询表dbgen_version在各个节点所占磁盘空间大小的分布情况。 tpcds_col=# select * from gs_table_distribution('public','dbgen_version'); 查询结果如下: 显示该表在DN上所占磁盘空间确实存在数据倾斜现象,数据集中在dn_6005_6006上。
  • 对结果进行排序 使用ORDER BY语句可以让查询结果按照期望的方式进行排序。 1 2 3 4 5 6 7 8 9 10 11 SELECT product_id,product_name,category,quantity FROM newproducts ORDER BY quantity DESC; product_id | product_name | category | quantity ------------+--------------+-------------+---------- 3577 | dumbbell | sports | 550 2344 | milklotion | skin care | 320 1666 | Frisbee | toys | 244 1210 | necklace | jewels | 200 1502 | earphones | electronics | 150 1700 | interface | books | 100 1601 | telescope | toys | 80 (7 rows)
  • 限制结果查询数量 如果需要查询只返回部分结果,可以使用LIMIT语句限制查询结果返回的记录数。 1 2 3 4 5 6 7 8 9 SELECT product_id,product_name,category,quantity FROM newproducts ORDER BY quantity DESC limit 5; product_id | product_name | category | quantity ------------+--------------+-------------+---------- 3577 | dumbbell | sports | 550 2344 | milklotion | skin care | 320 1666 | Frisbee | toys | 244 1210 | necklace | jewels | 200 1502 | earphones | electronics | 150 (5 rows)
  • 对结果进行筛选 通过WHERE语句对查询的结果进行过滤,找到想要查询的部分。 1 2 3 4 5 6 SELECT * FROM newproducts WHERE category='toys'; product_id | product_name | category | quantity ------------+--------------+----------+---------- 1601 | telescope | toys | 80 1666 | Frisbee | toys | 244 (2 rows)
  • 聚合查询 可以通过使用GROUP BY语句配合聚合函数,构建一个聚合查询来关注数据的整体情况。 1 2 3 4 5 6 7 8 9 SELECT category, string_agg(quantity,',') FROM newproducts group by category; category | string_agg -------------+------------ toys | 80,244 books | 100 sports | 550 jewels | 200 skin care | 320 electronics | 150
  • 多表查询中on条件和where条件的区别 从上面各种连接语法中可见,除自然连接和交叉连接外,其他都需要有on条件(using在查询解析过程中会被转为on条件)来限制两表连接的结果。通常在查询的语句中也都会有where条件限制查询结果。这里说的on连接条件和where过滤条件是指不含可以下推到表上的过滤条件。on和where的区别是: on条件是两表连接的约束条件。 where是对两表连接后产生的结果集再次进行过滤。 简单总结就是:on条件优先于where条件,在两表进行连接时被应用;生成两表连接结果集后,再应用where条件。
  • 连接类型介绍 通过SQL完成各种复杂的查询,多表之间的连接是必不可少的。连接分为:内连接和外连接两大类,每大类中还可进行细分。 内连接:标准内连接(INNER JOIN),交叉连接(CROSS JOIN)和自然连接(NATURAL JOIN)。 外连接:左外连接(LEFT OUTER JOIN),右外连接(RIGHT OUTER JOIN)和全外连接(FULL JOIN)。 为了能更好的说明各种连接之间的区别,下面通过具体示例进行详细的阐述。 创建示例表student和math_score,并插入数据,设置enable_fast_query_shipping为off(默认为on)即查询优化器使用分布式框架;参数explain_perf_mode为pretty(默认值为pretty)指定explain的显示格式。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE student( id INTEGER, name varchar(50) ); CREATE TABLE math_score( id INTEGER, score INTEGER ); INSERT INTO student VALUES(1, 'Tom'); INSERT INTO student VALUES(2, 'Lily'); INSERT INTO student VALUES(3, 'Tina'); INSERT INTO student VALUES(4, 'Perry'); INSERT INTO math_score VALUES(1, 80); INSERT INTO math_score VALUES(2, 75); INSERT INTO math_score VALUES(4, 95); INSERT INTO math_score VALUES(6, NULL); SET enable_fast_query_shipping = off; SET explain_perf_mode = pretty;
共100000条