华为云用户手册

  • nullif(expr1, expr2) 描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。 nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。 示例: 1 2 3 4 5 SELECT nullif('hello','world'); nullif -------- hello (1 row) 备注: 如果两个参数的数据类型不同,则: 两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如: 1 2 3 4 5 SELECT nullif('1234'::VARCHAR,123::INT4); nullif -------- 1234 (1 row) 1 2 SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE); ERROR: invalid input syntax for type timestamp: "1234" 两种数据类型之间不存在隐式转换,则返回错误 。如: 1 2 3 4 5 SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE); ERROR: operator does not exist: boolean = timestamp without time zone LINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM DUAL; ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  • coalesce(expr1, expr2, ..., exprn) 描述:返回参数列表中第一个非NULL的参数值。 COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 1 2 3 4 5 SELECT coalesce(NULL,'hello'); coalesce ---------- hello (1 row) 如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。 它常用于在显示数据时用缺省值替换NULL。 和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
  • ifnull(expr1, expr2) 描述:当expr1不为NULL时,返回expr1,否则返回expr2。 ifnull(expr1, expr2) 逻辑上等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 1 2 3 4 5 SELECT ifnull(NULL,'hello'); ifnull -------- hello (1 row) 参数expr1和expr2可以为任意类型,返回结果类型规则请参考UNION,CASE和相关构造。
  • decode(base_expr, compare1, value1, Compare2,value2, … default) 描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 示例: 1 2 3 4 5 SELECT decode('A','A',1,'B',2,0); case ------ 1 (1 row)
  • 位串类型 位串就是一串1和0的字符串。它们可以用于存储位掩码。 GaussDB (DWS)支持两种位串类型:bit(n)和bit varying(n),其中n是一个正整数。 bit类型的数据必须准确匹配长度n,如果存储短或者长的数据都会报错。bit varying类型的数据是最长为n的变长类型,超过n的类型会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit varying表示没有长度限制。 如果显式地把一个位串值转换成bit(n),则此位串右边的内容将被截断或者在右边补齐零,直到刚好n位,而且不会抛出任何错误。类似地,如果显式地把一个位串数值转换成bit varying(n),如果它超过了n位,则它的右边将被截断。 位串类型使用示例: 创建示例表bit_type_t1: 1 2 3 4 5 6 CREATE TABLE bit_type_t1 ( BT_COL1 INTEGER, BT_COL2 BIT(3), BT_COL3 BIT VARYING(5) ) DISTRIBUTE BY REPLICATION; 插入数据: 1 INSERT INTO bit_type_t1 VALUES(1, B'101', B'00'); 插入数据的长度不符合类型的标准会报错。 1 2 3 INSERT INTO bit_type_t1 VALUES(2, B'10', B'101'); ERROR: bit string length 2 does not match type bit(3) CONTEXT: referenced column: bt_col2 将不符合类型长度的数据进行转换: 1 INSERT INTO bit_type_t1 VALUES(2, B'10'::bit(3), B'101'); 查看数据: 1 2 3 4 5 6 SELECT * FROM bit_type_t1; bt_col1 | bt_col2 | bt_col3 ---------+---------+--------- 1 | 101 | 00 2 | 100 | 101 (2 rows) 父主题: 数据类型
  • get_all_col_file_vacuum_info(force_get_rewritten_file_num bool) 描述:查询全库所有列存表的文件vacuum相关信息。该函数仅8.2.0.100及以上集群版本支持。 参数:是否强制获取准确的可清理文件数(必选,true或false) 返回值类型:record 返回值: node_name:DN节点名。 schema_name:模式名。 table_name:表名。 total_file_num:总CU文件数。 rewritable_file_num:可重写,但还未重写的文件数。 rewritten_file_num:已重写未清理文件数,此值来源于内存态ClearCache,若由于重启等原因ClearCache丢失,可通过设置force_get_rewritten_file_num=true,消耗额外的时间,强制获取准确的可清理文件数。 empty_file_num:已清理文件数。 示例: 1 2 3 4 5 6 7 8 9 SELECT * FROM get_all_col_file_vacuum_info(false); node_name | schema_name | table_name | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num -----------+-------------+----------------------+----------------+---------------------+--------------------+---------------- datanode1 | public | udi_57373 | 2 | 0 | 0 | 1 datanode1 | public | udi_57374 | 2 | 0 | 0 | 1 datanode2 | public | udi_57373 | 2 | 0 | 0 | 1 datanode2 | public | udi_57374 | 2 | 0 | 0 | 1 datanode3 | public | udi_57373 | 2 | 0 | 0 | 1 datanode3 | public | udi_57374 | 2 | 0 | 0 | 1
  • get_all_col_cu_info(row_count int8) 描述:查询全库所有列存表的CU信息。该函数仅8.2.0.100及以上集群版本支持。 参数:小CU的行数阈值(可选,默认值200,取值范围为1~60000。) 返回值类型:record 返回值: node_name:DN节点名。 schema_name:模式名。 table_name:表名。 zero_size_cu_count:cuSize=0,且行数小于等于row_count的CU数。 small_cu_count:cuSize=ALIGNOF_CUSIZE(8192),且行数小于等于row_count的CU数。 total_cu_count:总CU数。 small_cu_size:8kCU的总大小。 total_cu_size:总CU大小。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT * FROM get_all_col_cu_info(200); node_name | schema_name | table_name | zero_size_cu_count | small_cu_count | total_cu_count | small_cu_size | total_cu_size -----------+-------------+----------------------+--------------------+----------------+----------------+---------------+--------------- datanode1 | public | udi_48076 | 5 | 1 | 6 | 8192 bytes | 8192 bytes datanode1 | public | udi_48077 | 5 | 1 | 6 | 8192 bytes | 8192 bytes datanode2 | public | udi_48076 | 5 | 1 | 6 | 8192 bytes | 8192 bytes datanode2 | public | udi_48077 | 5 | 1 | 6 | 8192 bytes | 8192 bytes datanode3 | public | udi_48076 | 5 | 1 | 6 | 8192 bytes | 8192 bytes datanode3 | public | udi_48077 | 5 | 1 | 6 | 8192 bytes | 8192 bytes (6 rows)
  • pg_get_publication_tables(pubname text) 描述:根据发布的名称,返回对应发布要发布的表的relid列表。该函数仅8.2.0.100及以上集群版本支持。 参数:pubname 返回值类型:set of oid 示例: 1 2 3 4 5 6 SELECT * FROM pg_get_publication_tables('mypub'); relid ------- 16757 16776 (2 rows)
  • get_volatile_pg_attribute(relname text, attrname text) 描述:获取当前会话中指定volatile临时表相关的pg_attribute元数据。该函数仅8.2.0及以上集群版本支持。 参数: relname:表名(必须在当前会话中)。 attrname:列名。 返回值类型:record 返回值字段: oid:返回该列信息的oid。 其他字段:同pg_attribute系统表中的基础字段(不包括系统隐藏字段)。 示例: 1 2 3 4 5 6 7 8 SELECT * FROM get_volatile_pg_attribute('tx1', 'b'); attrelid | attname | atttypid | attstattarget | attlen | attnum | attndims | attcacheoff | atttypmod | attbyval | attstorage | attalign | attnotnull | atthasdef | attisdropped | attislocal | attcmprmode | attinhcount | attcollation | attacl | attoptions | attfdwoptions | attinitdefval | attkvtype ----------+---------+----------+---------------+--------+--------+----------+-------------+-----------+----------+------------+----------+------------+-----------+--------------+------------+ -------------+-------------+--------------+--------+------------+---------------+---------------+----------- 16772 | b | 25 | -1 | -1 | 2 | 0 | -1 | -1 | f | x | i | f | f | f | t | 127 | 0 | 100 | | | | | 0 (1 row)
  • get_col_file_vacuum_info(schema_name text, table_name text, force_get_rewritten_file_num bool ) 描述:查询某张列存表的文件vacuum相关信息,每个分区单独统计。该函数仅8.2.0.100及以上集群版本支持。 参数:模式名(必选),表名(必选),是否强制获取准确的可清理文件数(必选,默认为false) 返回值类型:record 返回值: node_name:DN节点名。 part_name:分区名,普通表此列为空。 total_file_num:总CU文件数。 rewritable_file_num:可重写,但还未重写的文件数。 rewritten_file_num:已重写未清理文件数,此值来源于内存态ClearCache,若由于重启等原因ClearCache丢失,可通过设置force_get_rewritten_file_num=true,消耗额外的时间,强制获取准确的可清理文件数。 empty_file_num:已清理文件数。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT * FROM get_col_file_vacuum_info('public','pa',false); node_name | part_name | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num -----------+-----------+----------------+---------------------+--------------------+---------------- datanode1 | pa1 | 1 | 0 | 0 | 0 datanode1 | pa2 | 1 | 0 | 0 | 0 datanode2 | pa1 | 1 | 0 | 0 | 0 datanode2 | pa2 | 1 | 0 | 0 | 0 datanode3 | pa1 | 1 | 0 | 0 | 0 datanode3 | pa2 | 1 | 0 | 0 | 0 (6 rows)
  • pg_relation_is_publishable(relname regclass) 描述:检查一个表是否可以发布。该函数仅8.2.0.100及以上集群版本支持。 参数:relname 返回值类型:boolean 示例: 1 2 3 4 5 SELECT * FROM pg_relation_is_publishable('t1'); pg_relation_is_publishable ---------------------------- t (1 row)
  • get_col_cu_info(schema_name text, table_name text, row_count int8) 描述:查询某张列存表的CU信息,每个分区单独统计。该函数仅8.2.0.100及以上集群版本支持。 参数:模式名(必选),表名(必选),小CU的行数阈值(可选,默认200,取值范围为1~60000。) 返回值类型:record 返回值: node_name:DN节点名。 part_name:分区名,普通表此列为空。 zero_size_cu_count:cuSize=0,且行数小于等于row_count的CU数。 small_cu_count:cuSize=ALIGNOF_CUSIZE(8192),且行数小于等于row_count的CU数。 total_cu_count:总CU数。 small_cu_size:8kCU的总大小。 total_cu_size:总CU大小。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT * FROM get_col_cu_info('public','t1',200); node_name | part_name | zero_size_cu_count | small_cu_count | total_cu_count | small_cu_size | total_cu_size -----------+-----------+--------------------+----------------+----------------+---------------+--------------- datanode2 | pa1 | 2 | 0 | 2 | 0 bytes | 0 bytes datanode2 | pa2 | 0 | 2 | 2 | 16 kB | 16 kB datanode3 | pa1 | 0 | 2 | 2 | 16 kB | 16 kB datanode3 | pa2 | 0 | 2 | 2 | 16 kB | 16 kB datanode1 | pa1 | 0 | 2 | 2 | 16 kB | 16 kB datanode1 | pa2 | 0 | 2 | 2 | 16 kB | 16 kB (6 rows)
  • get_col_file_vacuum_info(schema_name text, table_name text, colvacuum_threshold_scale_factor int) 描述:查询某张列存表的文件vacuum相关信息,每个分区单独统计。该函数仅8.2.0.100及以上集群版本支持。 参数:模式名(必选),表名(必选),colvacuum_threshold_scale_factor(必选,0-100为dead tuple的比例值) 返回值类型:record 返回值: node_name:DN节点名。 part_name:分区名,普通表此列为空。 total_file_num:总CU文件数。 rewritable_file_num:可重写,但还未重写的文件数。 rewritten_file_num:已重写未清理文件数,此值来源于内存态ClearCache,若由于重启等原因ClearCache丢失,可通过设置force_get_rewritten_file_num=true,消耗额外的时间,强制获取准确的可清理文件数。 empty_file_num:已清理文件数。 示例: 1 2 3 4 5 6 7 8 9 10 SELECT * FROM get_col_file_vacuum_info('public','pa',10); node_name | part_name | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num -----------+-----------+----------------+---------------------+--------------------+---------------- datanode1 | pa1 | 1 | 0 | 0 | 0 datanode1 | pa2 | 1 | 0 | 0 | 0 datanode2 | pa1 | 1 | 0 | 0 | 0 datanode2 | pa2 | 1 | 0 | 0 | 0 datanode3 | pa1 | 1 | 0 | 0 | 0 datanode3 | pa2 | 1 | 0 | 0 | 0 (6 rows)
  • wdr_xdb_query(db_name text, snapshot_id bigint, view_name text) 描述:查询指定数据库下的指定视图。有的视图在不同数据库中查询结果不同,例如global_table_stat视图用于查询表格的统计信息,由于不同数据库下表格不同,在不同数据库中查询该视图得到的结果也不同。wdr_xdb_query函数可以在当前连接中访问db_name指定的数据库,并在该数据库中查询view_name指定的视图。输入参数含义如下: db_name:指定的数据库名称,text型。 snapshot_id:快照ID,bigint型,参见“性能视图快照”。 view_name:指定视图名称,text型。视图名称必须在如下白名单中: global_table_stat global_table_change_stat global_column_table_io_stat global_row_table_io_stat 返回值类型:record,其第一列为snapshot_id bigint,第二列为db_name text,其他列的名称、类型和顺序与view_name指定的视图相同。 示例: 1 2 select snapshot_id, db_name, schemaname, relname, distribute_mode, seq_scan ,seq_tuple_read ,index_scan ,index_tuple_read ,tuple_inserted ,tuple_updated ,tuple_deleted ,tuple_hot_updated ,live_tuples ,dead_tuples from wdr_xdb_query('postgres'::text, 1, 'global_table_stat'::text) as i(snapshot_id bigint, db_name text, schemaname name, relname name, distribute_mode char, seq_scan bigint, seq_tuple_read bigint, index_scan bigint, index_tuple_read bigint, tuple_inserted bigint, tuple_updated bigint, tuplee_deleted bigint, tuple_hot_updated bigint, live_tuples bigint, dead_tuples bigint); 该函数仅8.1.2及以上版本支持。 该函数只有数据库管理员SYSADMIN才有权执行,非管理员执行会提示无权限。 该函数只能查询白名单中的视图,如果查询其他视图,会报错:“Input view name is invalid.”。
  • get_all_col_file_info() 描述:查询所有列存表的空CU文件数和总CU文件数,该函数仅8.2.0及以上集群版本支持。 返回值类型:record 返回值字段: space_name text:列存表所属schema table_name text:列存表名 total_file_num int:总CU文件数,范围为-1~INT_MAX,返回-1时表示表类型不支持等原因的失败,0~INT_MAX为总文件数。 empty_file_num int:空CU文件数,范围为-1~INT_MAX,返回-1时表示表类型不支持等原因的失败,0~INT_MAX为空文件数。 示例: 1 2 3 4 5 6 7 call get_all_col_file_info(); space_name | table_name | total_file_num | empty_file_num ------------+------------+----------------+---------------- public | t4 | 10 | 7 public | t2 | 1 | 1 public | t1 | 3 | 0 (3 rows)
  • kill_snapshot(scope cstring) 描述:中止后台快照线程。该函数向后台快照线程发送中止信号并等待线程结束。 输入参数scope:表示操作范围。该参数取值范围为local和global。 local表示中止当前CN上的快照线程。 global表示不仅会中止当前CN上的快照线程,还会向集群中所有其他CN发送中止快照线程的请求,即中止集群中所有CN上的快照线程。 如果输入其他值,则报错“Scope is invalid, use "local" or "global".”。 输入参数可为空,表示默认取值为local。 返回值类型:无 该函数只有数据库管理员SYSADMIN才有权执行,非管理员执行会提示无权限。 该函数只能在CN上执行,在DN上执行会提示:“kill_snapshot can only be executed on coordinator.”; 执行该函数会向后台快照线程发送中止信号并等待其结束。如果100s内快照线程仍未中止则会报错:“Kill snapshot thread failed”;
  • get_volatile_pg_class(relname text) 描述:获取当前会话中指定volatile临时表相关的pg_class元数据。该函数仅8.2.0及以上集群版本支持。 参数:当前会话中volatile临时表表名。 返回值类型:record 返回值字段: oid:返回volatile临时表的oid。 其他字段:同pg_class系统表中的基础字段(不包括系统隐藏字段)。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT * FROM get_volatile_pg_class('tx1'); oid | relname | relnamespace | reltype | reloftype | relowner | relam | relfilenode | reltablespace | relpages | reltuples | relallvisible | reltoastrelid | reltoastidxid | reldeltarelid | reldeltaidx | relcudescrelid | relcudescidx | relhasindex | relisshared | relpersistence | relkind | relnatts | relchecks | relhasoids | relhaspkey | relhasrules | relhastriggers | relhassub class | relcmprs | relhasclusterkey | relrowmovement | parttype | relfrozenxid | relacl | reloptions | relreplident | relfrozenxid64 -------+---------+--------------+---------+-----------+----------+-------+-------------+---------------+----------+-----------+---------------+---------------+---------------+---------------+ -------------+----------------+--------------+-------------+-------------+----------------+---------+----------+-----------+------------+------------+-------------+----------------+---------- ------+----------+------------------+----------------+----------+--------------+--------+----------------------------------+--------------+---------------- 16772 | tx1 | 16770 | 16774 | 0 | 10 | 0 | 16772 | 1665 | 0 | 0 | 0 | 16775 | 0 | 0 | 0 | 0 | 0 | f | f | v | r | 2 | 0 | f | f | f | f | f | 1 | f | f | n | 11815 | | {orientation=row,compression=no} | d | 11815 (1 row)
  • create_wdr_snapshot() 描述:创建性能数据快照。 返回值类型:text 该函数只有数据库管理员SYSADMIN才可以执行,非管理员执行会提示无权限。 该函数只能在CN上执行,在DN上执行会返回:“WDR snapshot can only be created on coordinator.”。 执行该函数前需确认enable_wdr_snapshot参数处于开启状态。如果enable_wdr_snapshot为off,执行该函数会返回:“WDR snapshot request can't be executed, because GUC parameter 'enable_wdr_snapshot' is off.”。 如果执行该函数时,快照线程由于节点重启等原因尚未启动,会提示错误:“WDR snapshot request can not be accepted, please retry later.”。 如果执行该函数失败,会提示:“Cannot respond to WDR snapshot request.”。 如果执行成功,会返回:“WDR snapshot request has been submitted.”。该提示表明创建快照请求已发送至后台快照线程,但不代表创建快照成功。
  • get_col_file_info(table_name) 描述:查询指定列存表的空CU文件数和总CU文件数,该函数仅8.2.0及以上集群版本支持。 参数:列存表名。 返回值类型:int 返回值字段: total_file_num int:总CU文件数,范围为-1~INT_MAX,返回-1时表示表类型不支持等原因的失败,0~INT_MAX为总文件数。 empty_file_num int:空CU文件数,范围为-1~INT_MAX,返回-1时表示表类型不支持等原因的失败,0~INT_MAX为空文件数。 示例: 1 2 3 4 5 call get_col_file_info('t4'); total_file_num | empty_file_num ----------------+---------------- 10 | 7 (1 row)
  • table_distribution(regclass) 描述:查看指定表在各个节点上占用的存储空间。 参数:表示待查询表的表名或OID,表名可以有模式名限定。为regclass类型。 返回值类型:record 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 table_distribution性能比table_skewness更优,尤其是在大集群大数据量场景下,请优先考虑使用table_distribution函数。 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
  • table_distribution() 描述:查看当前库中所有表在各节点的存储空间分布情况。 返回值类型:record 使用本函数涉及全库表信息查询,需要具备管理员权限或预置角色gs_role_read_all_stats权限。 当前基于table_distribution()函数,GaussDB(DWS)提供视图PGXC_GET_TABLE_SKEWNESS进行数据倾斜查询,建议在数据库中表数量(小于10000)较少的场景直接使用。
  • gs_table_distribution(schemaname text, tablename text) 描述:快速查看指定表在各个节点上占用的存储空间。 返回值类型:record 表1 gs_table_distribution(schemaname text, tablename text) 名称 类型 描述 schemaname name 模式名称。 tablename name 表名。 relkind character 类型。 i: 索引 r: 表 nodename name 节点名称。 dnsize bigint 表在该节点上的存储空间大小,单位:字节。 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 该函数基于PG_RELFILENODE_SIZE系统表上的物理文件存储空间记录,需确保GUC参数use_workload_manager和enable_perm_space必须开启。 性能上,单表查询时,gs_table_distribution函数低于table_distribution函数;在全库表查询时,gs_table_distribution函数大幅度优于table_distribution函数;在大集群大数据量场景下,如果进行全库表表查询,建议优先使用gs_table_distribution函数。
  • gs_table_distribution() 描述:快速查看当前库中所有表在各节点的存储空间分布情况。 返回值类型:record 表2 gs_table_distribution() 名称 类型 描述 schemaname name 模式名称。 tablename name 表名。 relkind character 类型,i: 索引,r: 表。 nodename name 节点名称。 dnsize bigint 表在该节点上的存储空间大小,单位:字节。 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 该函数基于PG_RELFILENODE_SIZE系统表上的物理文件存储空间记录,需确保GUC参数use_workload_manager和enable_perm_space必须开启。 性能上,单表查询时,gs_table_distribution函数低于table_distribution函数;在全库表查询时,gs_table_distribution函数大幅度优于table_distribution函数;在大集群大数据量场景下,如果进行全库表表查询,建议优先使用gs_table_distribution函数。
  • pgxc_parallel_query(text, text) 描述:在指定类型的 数据实例 上执行指定的SQL查询语句,并把查询语句的结果返回给当前CN。该函数8.1.2及以上版本支持。 函数有两个参数: 第一个参数:SQL语句在哪些实例上执行。当前支持的有效入参是 'dn', 'datanode','cn', 'coordinator', 'all', 其它值会导致函数执行报错。其中 'dn', 'datanode'表示在所有DN上执行,'cn', 'coordinator'表示在所有CN上执行, all表示在所有的CN和所有的DN上执行。 第二个参数:需要发往远程节点执行的SQL语句,函数内部会对SQL语句中查询的对象进行校验,不支持用户表、分布式表和自定义的多结果集函数。 返回值类型:record 该函数功能仅为便于开发人员高效的收集集群内实例执行信息或者状态的视图,不建议用户直接使用。 该函数为多结果集函数,返回的数据类型为record,所以需要在函数调用后面增加AS语句显示的指出输出的列名和数据类型,如下所示: SELECT * FROM pgxc_parallel_query('all', 'select node_name, db_name, thread_name, query_id, tid, lwtid, ptid, tlevel, smpid, wait_status, wait_event from pg_thread_wait_status') AS (node_name text, db_name text, thread_name text, query_id bigint, tid bigint, lwtid integer , ptid integer, tlevel integer , smpid integer, wait_status text, wait_event text); 函数第二个参数指定的SQL语句输出结果的数据类型必须跟AS后面指明的数据类型一致,否则执行时可能会因为类型不匹配而报错。 函数第二个参数指定的SQL语句中不能触发跨节点的查询动作,否则会触发执行报错。 函数第二个参数指定的SQL语句只能是SELECT/UPDATE/DELETE/INSERT语句中的一种,且 不支持语句中有returning语句。 函数调用用户需具有SQL语句中对象相应的操作权限。 如果是INSERT语句,不支持INSERT OVERWRITE、UPSERT、和INSERT INTO。 对于UPDATE/DELETE/INSERT语句,只允许初始化用户在就地升级模式下或者管理员用户在重分布模式下执行;要求语句在每个实例上修改的记录数相同,否则执行会报错;函数会输出一条一列bigint类型的数值,此数值表示语句在每个实例上操作的记录数。 SELECT * FROM pgxc_parallel_query('cn', 'UPDATE pg_partition SET relpages = 0') AS (updated bigint);
  • table_distribution(schemaname text, tablename text) 描述:查看指定表在各个节点上占用的存储空间。 参数:表示待查询表的模式名和表名,均为text类型。 返回值类型:record 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 table_distribution性能比table_skewness更优,尤其是在大集群大数据量场景下,请优先考虑使用table_distribution函数。 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。
  • reset_instr_unique_sql(cstring, cstring, INT8) 描述:清理已收集的Unique SQL信息。输入参数含义如下: GLOBAL/LOCAL:清理范围为所有节点或当前节点。 ALL/BY_USERID/BY_CNID/BY_GUC:ALL表示清理所有,BY_USERID/BY_CNID表示按照USERID或CNID进行清理,BY_GUC表示清理操作是由GUC参数instr_unique_sql_count设置值变小引起的。 第三个参数值对应第二个参数设置,ALL/BY_GUC的情况下该值无意义。 返回值类型:bool
  • copy_error_log_create() 描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。 返回值类型:boolean 此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表3。 在relname列上创建B-tree索引,并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制(与COPY语句权限一致)。 由于尝试创建的public.pgxc_copy_error_log定义是一张行存表,因此集群上必须支持行存表的创建才能够正常运行此函数,并使用后续的COPY容错功能。需要特别注意的是,enable_hadoop_env这个GUC参数开启后会禁止在集群内创建行存表(GaussDB(DWS)默认为off)。 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。 表3 错误表public.pgxc_copy_error_log信息 列名称 类型 描述 relname varchar 表名称。以模式名.表名形式显示。 begintime timestamp with time zone 出现数据格式错误的时间。 filename character varying 出现数据格式错误的数据源文件名。 rownum bigint 在数据源文件中,出现数据格式错误的行号。 rawrecord text 在数据源文件中,出现数据格式错误的原始记录。为了防止字段长度过大,限制字段的长度不超过1024 byte。 detail text 详细错误信息。
  • pg_stat_get_status(tid, num_node_display) 描述:查询当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,其返回结果的详细含义参见PG_THREAD_WAIT_STATUS视图。输入参数含义如下: tid:表示线程ID,bigint类型。如果为NULL,则返回所有工作线程和辅助线程的等待情况;否则只返回指定ID线程的等待情况。 num_node_display:integer类型。对于等待状态为“wait node”的记录,指定其wait_status列中显示的被等待节点的最大数量。 如果为空或者小于等于0,则只显示一个被等待节点。 如果大于20,则最多只显示20个节点。 如果大于0且小于等于20,则显示数量为num_node_display和实际被等待节点数量的最小者。例如查询“SELECT * FROM pg_stat_get_status(NULL, 10)”,如果实际被等待节点数量大于10,则只随机显示其中10个节点名称,如果实际被等待节点数量小于等于10,则显示全部被等待节点名称。当实际被等待节点数量大于显示数量时,被显示的节点名称为随机挑选。 返回值类型:record
  • table_skewness(table_name text, column_name text[, row_num text]) 描述:查看表里某列数据,按hash分布规则,在各节点的占比情况。结果以数据节点上的数据量排序。 参数:table_name为表名;column_name为列名;row_num表示查看当前列所有数据,可缺省,默认为0。非0时,表示抽取指定条数的数据查看占比情况(每次采样结果可能不相同,只保证采集row_num条数据进行占比计算)。 返回值类型:record 示例: 根据tx表中的a列,按hash分布,则在1,2,0编号的DN上分布的数据量分别为7条,2条,1条。 1 2 3 4 5 6 7 SELECT * FROM table_skewness('tx','a'); seqnum | num | ratio --------+-----+---------- 1 | 7 | 70.000% 2 | 2 | 20.000% 0 | 1 | 10.000% (3 row)
  • table_data_skewness(data_row record, locatorType "char") 描述:计算指定表中列拼接出的record,对应的桶分布索引。 参数:data_row表示指定表中列拼接出的record,locatorType表示分布规则,当前建议指定'H',按hash分布计算。 返回值类型:smallint 示例: 计算tx表中a列拼接的record,按照hash分布规则对应的桶分布索引。 1 2 3 4 5 6 7 8 9 SELECT a, table_data_skewness(row(a), 'H') FROM tx; a | table_data_skewness ---+--------------------- 3 | 0 6 | 2 7 | 2 4 | 1 5 | 1 (5 rows)
共100000条