华为云用户手册

  • 数组类型的定义 一个数组数据类型可以通过在数组元素的数据类型名称后面加上方括号([])来命名。 例如,创建表books,其中表示书本价格的列price的类型为一维integer类型数组,表示书本标签的列tag的类型为二维text类型数组。 1 CREATE TABLE books (id SERIAL PRIMARY KEY, title VARCHAR(100), price_by_quarter int[], tags TEXT[][]); CREATE TABLE语法可以指定数组的大小,例如: 1 CREATE TABLE test ( a int[3]); 当前的数据库实现会忽略语句中数组的大小限制,即其行为与未指定长度的数组相同。同时,也不会强制所声明的维度数。一个特定元素类型的数组全部被当作是相同的类型,而忽略其大小或维度数。 也可以使用关键词ARRAY来定义一维数组。表books中的列price使用ARRAY定义并指定数组大小,如下所示: 1 price_by_quarter int ARRAY[4] 使用ARRAY定义,不指定数组尺寸: 1 price_by_quarter int ARRAY
  • reload_cold_partition(relname text,partname text) 描述:用于将指定冷热表的特定冷分区转换成热分区。返回的数值为执行该函数切换分区的个数。该函数仅8.3.0及以上版本支持。 参数: relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)。 partname:分区名(指定冷热表下的分区名)。 返回值类型:integer 12345 SELECT reload_cold_partition('multi_temper_table','p1'); reload_cold_partition--------------------- 1(1 row)
  • reload_cold_partition(relname text) 描述:用于将指定冷热表的所有冷分区转换成热分区。返回的数值为执行该函数切换分区的个数。该函数仅8.3.0及以上版本支持。 参数: relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)。 返回值类型:integer 12345 SELECT reload_cold_partition('multi_temper_table'); reload_cold_partition--------------------- 4(1 row)
  • refresh_hot_storage(relname text) 描述:用于将指定冷热表的所有分区数据全部刷到OBS上。返回的数值为执行该函数切换分区的个数。该函数仅8.2.1.100及以上版本支持。 参数: relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0) 返回值类型:integer 12345 SELECT refresh_hot_storage('multi_temper_table'); refresh_hot_storage--------------------- 4(1 row)
  • refresh_hot_storage(relname text,partname text) 描述:用于将指定冷热表的分区数据刷到OBS上。返回的数值为执行该函数切换分区的个数。该函数仅8.2.1.100及以上版本支持。 参数: relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)。 partname:分区名(指定冷热表下的分区名)。 返回值类型:integer 12345 SELECT refresh_hot_storage('multi_temper_table','p1'); refresh_hot_storage--------------------- 1(1 row)
  • pg_obs_cold_refresh_time(table_name, time) 描述:用来修改冷热表的冷数据切换至OBS上的时间,默认为每日0点。 table_name为冷热表的表名,类型为name,time为数据切换任务调度时间,类型为Time。 返回值:SUC CES S,任务时间修改成功。 示例: 12345 SELECT * FROM pg_obs_cold_refresh_time('lifecycle_table', '06:30:00');pg_obs_cold_refresh_time-------------------------- SUCCESS(1 row)
  • pg_refresh_storage() 描述:切换所有冷热表,将符合冷热切换规则的数据由热数据切换至冷数据(OBS中)。 返回值类型:int 返回值字段: success_count int:切换成功的表个数 failed_count int:切换失败的表个数 示例: 12345 SELECT * FROM pg_refresh_storage(); success_count | failed_count---------------+-------------- 1 | 0(1 row)
  • pg_lifecycle_table_data_distribute(table_name) 描述:查看某个冷热表的数据分布情况。 table_name为表名,不可缺省。 返回值:record 示例:根据节点数量形成多条记录,如下示例为只有一个dn节点时w1表数据分布情况。 12345 SELECT * FROM pg_catalog.pg_lifecycle_table_data_distribute('w1'); schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize ------------+-----------+----------+--------------+---------------+---------------------+-------------+--------------+-------------------- public | w1 | dn_1 | p2 | p1 | | 80 KB | 0 bytes | 0 bytes(1 row)
  • pg_lifecycle_node_data_distribute() 描述:查看所有冷热表数据分布情况。 返回值:record 示例:数据库中当前存在两个冷热表,其数据分布情况如下。 123456 SELECT * FROM pg_catalog.pg_lifecycle_node_data_distribute(); schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize ------------+-----------+----------+--------------+---------------+---------------------+-------------+--------------+-------------------- public | w1 | dn_1 | p2 | p1 | | 81920 | 0 | 0 public | w2 | dn_1 | p2 | p1 | | 81920 | 0 | 0(2 rows)
  • pgxc_get_residualfiles() 描述:pg_get_residualfiles()的CN统一查询函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。 返回值类型:record 返回信息如下: 表2 pgxc_get_residualfiles()返回字段 名称 类型 描述 nodename text 节点名称。 isverified bool 是否已经验证。 isdeleted bool 是否已经被删除。 dbname text 所属数据库名称。 residualfile text 数据文件路径。 filepath text 残留文件记录路径。 notes text 注释。 示例: 12345678 SELECT * FROM pgxc_get_residualfiles(); nodename | isverified | isdeleted | dbname | residualfile | filepath | notes --------------+------------+-----------+----------+-------------------+---------------------------+------- cn_5001 | f | f | postgres | base/15092/32803 | pgrf_20200910170129360401 | dn_6001_6002 | f | f | db2 | base/49155/114691 | pgrf_20200908160211441546 | dn_6001_6002 | f | f | db2 | base/49155/114694 | pgrf_20200908160211441546 | dn_6001_6002 | f | f | db2 | base/49155/114696 | pgrf_20200908160211441546 | (4 rows)
  • pg_get_residualfiles() 描述:用于获取当前节点的所有残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。 返回值类型:record 返回信息如下: 表1 pg_get_residualfiles()返回字段 名称 类型 描述 isverified bool 是否已经验证。 isdeleted bool 是否已经被删除。 dbname text 所属数据库名称。 residualfile text 数据文件路径。 filepath text 残留文件记录路径。 notes text 注释。 示例: 1234567 SELECT * FROM pg_get_residualfiles(); isverified | isdeleted | dbname | residualfile | filepath | notes ------------+-----------+--------+-------------------+---------------------------+------- f | f | db2 | base/49155/114691 | pgrf_20200908160211441546 | f | f | db2 | base/49155/114694 | pgrf_20200908160211441546 | f | f | db2 | base/49155/114696 | pgrf_20200908160211441546 | (3 rows)
  • 复合类型的声明 GaussDB (DWS)支持用户使用CREATE TYPE定义复合类型: 1 2 3 4 5 6 7 8 910 CREATE TYPE complex AS ( r double precision, i double precision );CREATE TYPE inventory_item AS ( name text, supplier_id integer, price numeric ); 定义复合类型之后,可用来创建表或函数: 123456 CREATE TABLE on_hand ( item inventory_item, count integer );INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000); 1234 CREATE FUNCTION price_extension(inventory_item, integer) RETURNS numeric AS 'SELECT $1.price * $2' LANGUAGE SQL;SELECT price_extension(item, 10) FROM on_hand;
  • 构造复合值 要把复合值写作文字常量,可以将字段值括在圆括号中,并用逗号分隔。可以在任何字段值加上双引号,如果字段值包含逗号或括号则必须这样做。复合常量的一般格式如下: 1 '( val1 , val2 , ... )' 上文中的'("fuzzy dice",42,1.99)'便属于inventory_item类型的一个合法值。 要让一个字段为NULL,在列表中对应位置上空出即可。如果需要一个字段为空字符串,使用引号即可。例如下列示例,第一个字段是非NULL空字符串,第三个是NULL: 1 '("",42,)' ROW表达式也能被用来构建组合值。例如: 12 ROW('fuzzy dice', 42, 1.99)ROW('', 42, NULL)
  • XMLSERIALIZE ( { DOCUMENT | CONTENT } value AS type 描述:从XML类型的值生成一个字符串。 返回值类型:type,可以是character,character varying或text(或其别名) 示例: 12345 SELECT xmlserialize(content 'good' AS CHAR(10)); xmlserialize-------------- good(1 row)
  • txid_visible_in_snapshot(bigint, txid_snapshot) 描述:在快照中事务ID是否可见(不使用子事务ID)。 返回类型:boolean 内部事务ID类型(xid)是32位,每40亿事务一次循环。这些函数使用的数据类型txid_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述在表1。 表1 快照组件 名字 描述 xmin 最早的事务ID(txid)仍然活动。所有较早事务将是已经提交可见的,或者是直接回滚。 xmax 作为尚未分配的txid。所有大于或等于此txids的都是尚未开始的快照时间,因此不可见。 xip_list 当前快照中活动的txids。这个列表只包含在xmin和xmax之间活动的txids;有可能活动的txids高于xmax。 介于大于等于xmin、小于xmax,并且不在这个列表中的txid,在这个时间快照已经完成的,因此按照提交状态查看他是可见还是回滚。这个列表不包含子事务的txids。 txid_snapshot的文本表示为:xmin:xmax:xip_list。 示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip_list=10, 14, 15。
  • pv_compute_pool_workload() 描述:返回计算子集群当前的负载状态。 返回类型:void 示例: SELECT * from pv_compute_pool_workload(); nodename | rpinuse | maxrp | nodestate-----------+---------+-------+----------- datanode1 | 0 | 1000 | normal datanode2 | 0 | 1000 | normal(2 rows)
  • pg_rm_residualfiles(filepath) 描述:用于删除当前实例中指定残留文件列表中的文件。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。 参数类型:text 返回值类型:record 函数返回字段如下: 表1 pg_rm_residualfiles(filepath)返回字段 名称 类型 描述 result bool 是否已经完成删除。 示例: 12345 SELECT * FROM pg_rm_residualfiles('pgrf_20200908160211441599'); result -------- t(1 row) 残留文件只有在调用pg_verify_residualfiles()进行verify后才能被真正删除。 删除动作不区分数据库,指定文件中所有已经verify的文件都会被删除。 如果指定文件中记录的所有文件都已经被删除,指定文件会被移除并备份到$PGDATA/pg_residualfile/backup目录下。
  • pgxc_rm_residualfiles() 描述:pgxc_rm_residualfiles的CN统一查询函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。 参数类型:无 返回值类型:record 函数返回字段如下: 表3 pgxc_rm_residualfiles()返回字段 名称 类型 描述 nodename text 节点名。 result bool 是否已经完成删除。 filepath text 残留文件记录路径。 notes text 注释。 示例: 123456 SELECT * FROM pgxc_rm_residualfiles(); nodename | result | filepath | notes --------------+--------+---------------------------+------- cn_5001 | t | pgrf_20200910170129360401 | dn_6001_6002 | t | pgrf_20200908160211441546 | (2 rows)
  • pg_rm_residualfiles() 描述:用于删除当前实例中所有的残留文件列表中的文件。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。 参数类型:无 返回值类型:record 函数返回字段如下: 表2 pg_rm_residualfiles()返回字段 名称 类型 描述 result bool 是否已经完成删除。 filepath text 残留文件记录路径。 notes text 注释。 示例: 12345 SELECT * FROM pg_rm_residualfiles(); result | filepath | notes --------+---------------------------+------- t | pgrf_20200908160211441546 | (1 row) 残留文件只有在调用pg_verify_residualfiles()进行验证后才能被真正删除。 删除动作不区分数据库,指定文件中所有已经验证的文件都会被删除。 如果指定文件中记录的所有文件都已经被删除,指定文件会被移除并备份到$PGDATA/pg_residualfile/backup目录下。
  • pg_task_remove(text) 描述:删除某个自动调度任务,入参为该任务的task-id,函数返回被删除任务的个数。 返回值类型:integer 示例: 12345 SELECT pg_task_remove('64661705-8ada-0100-d07f-b57e89a0fffe'); pg_task_remove---------------- 1(1 row)
  • pg_task_resume(text) 描述:恢复某个自动调度任务执行,入参为该任务的task-id。函数返回被恢复执行任务的个数。该函数仅8.3.0及以上版本支持。 返回值类型:integer 示例: 12345 SELECT pg_task_resume('64661705-8ada-0100-d07f-b57e89a0fffe'); pg_task_resume---------------- 1(1 row)
  • pg_task_reset_interval(text, interval) 描述:修改某个同步任务的调度周期,第一个入参为任务的task_id,第二个入用于指定任务的调度周期,取值范围为5秒至24小时。函数返回被修改周期的任务的个数。该函数仅8.3.0及以上版本支持。 返回值类型:integer 示例: 12345 select pg_task_reset_interval('64bfd69c-a016-0000-120e-1e802978fffe', '10 hours 30 minutes');pg_task_reset_interval------------------------1(1 row)
  • pg_task_show(text) 描述:查询当前自动调度任务信息,对于hudi同步任务,入参应该是'SQLonHudi'。 返回值类型:setof record 示例: 12345 SELECT * FROM pg_task_show('SQLonHudi'); task_id | what | category_id | userid | is_broken | interval | time_cons | start_time | end_time | parameter | task_rank | next_start_time | next_end_time | last_log | failure_times --------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+--------+-----------+------------+-----------+-------------------------------+----------+-----------+-----------+-------------------------------+-------------------------------+----------+--------------- 64d257e9-1e9b-0d00-3ce3-7e61b5e0fffe | call pg_catalog.hudi_sync_custom('public.hudi_read_target', 'public.hudi_read101', '{"_hoodie_commit_seqno" : "_hoodie_commit_seqno", "id" : "id", "ts" : "ts", "long_field" : "ts"}'); | SQLonHudi | 10 | f | '00:00:10' | | 2023-08-08 22:58:15.846903+08 | | | 5 | 2023-08-08 22:58:15.846903+08 | 2023-08-08 22:58:24.846903+08 | | 0(1 row) last_log和failure_times字段用于记录上一次任务的状态。 last_log于任务结束时刷新,若任务成功,则清空内容;若任务失败则记录任务的失败日志。 failure_times于时间窗结束时刷新,若任务成功,置为0,失败则累加1,本轮未拉起则不变,可用于推断第一次失败出现的时间。
  • hudi_set_sync_commit(text, text) 描述:设置Hudi自动同步任务下一次同步的起点时间戳,可以用于重复同步历史数据或者跳过某些数据。第一个参数为任务id,第二个参数为用户期望的下一次同步起点。该函数需要在提交同步任务后使用,并且使用前需要暂停任务。该函数仅8.2.1.210及以上版本支持。 返回值类型:text 示例: 1234567 select hudi_set_sync_commit('6524c8e3-aae9-0000-5a14-be8ec000fffe', '20230511114021573');NOTICE: set sync commit successfully, the next synchronization will start from 20230511114021573CONTEXT: referenced column: hudi_set_sync_commit hudi_set_sync_commit---------------------- 20230511114021573(1 row) 只有拥有目标任务权限的用户才能成功调用该函数。 调用该函数前,目标任务需要处于暂停状态,且至少成功执行过一次。
  • hudi_sync_task_submit(regclass, regclass, interval) 描述:功能与hudi_sync_task_submit(regclass, regclass)一致。不同之处在于,用户可以额外指定一个interval类型入参,用于指定任务的调度周期,取值范围为5秒至24小时。提交任务成功会返回任务的task-id。该函数仅8.3.0及以上版本支持。 返回值类型:text 同步目标表必须包含主键,且主键需要与hudi recordkey一致。 如果hudi表包含precombine字段,那么同步目标表也必须包含与之对应的字段。 如果同步目标表只包含主键(除了主键外没有其他字段),则无法正常提交同步任务。 用户需要有同步目标表的insert和update权限、HUDI外表的select权限,否则无法正常提交同步任务。 示例: 12345 SELECT hudi_sync_task_submit('public.hudi_sync_i','public.hudi_mor_ft','1 hour'); hudi_sync_task_submit-------------------------------------- 6465efe2-3ea1-0b00-dde5-b57dfb30fffe(1 row)
  • hudi_show_sync_state() 描述:获取Hudi自动同步任务的同步状态。 返回值类型:setof record 示例: 12345 SELECT * FROM hudi_show_sync_state(); target_tbl | source_ftbl | payload_type | precombine_key | latest_commit--------------------+--------------------+-------------------------------------------------------------+----------------+------------------- public.hudi_sync_i | public.hudi_mor_ft | org.apache.hudi.common.model.OverwriteWithLatestAvroPayload | col_int | 20230511114021573(1 row)
  • hudi_get_max_commit(regclass) 描述:获取当前Hudi外表最新commit的时间戳和数据写入时间。 返回值类型:record 示例: 12345 SELECT * FROM hudi_get_max_commit('public.hudi_mor_ft'); max_commit | write_time----------------+------------------------ 20221207141822 | 2022-12-07 14:18:30+08(1 row)
  • hudi_sync_task_submit(regclass, regclass, text, text) 描述:功能与hudi_sync_task_submit(regclass, regclass)一致,不同之处在于,用户可以额外指定两个text入参,表示用户期望哪些字段被同步。字段之间使用','分隔,支持引号和转义字符的解析。两个text参数的字段数量和顺序应当一致,表示同步字段之间的对应关系。提交任务成功会返回任务的task-id。 返回值类型:text 同步目标表必须包含主键,且主键需要与hudi recordkey一致。 如果hudi表包含precombine字段,那么同步目标表也必须包含与之对应的字段。 如果同步目标表只包含主键(除了主键外没有其他字段),则无法正常提交同步任务。 用户需要有同步目标表的insert和update权限、HUDI外表的select权限,否则无法正常提交同步任务。 示例: 12345 SELECT hudi_sync_task_submit('public.hudi_sync_i','public.hudi_mor_ft','_hoodie_commit_time, col_bigint, col_text', '_hoodie_commit_time, col_bigint, col_text'); hudi_sync_task_submit-------------------------------------- 646610bc-cdd1-0d00-d07d-b57e89a0fffe(1 row)
  • hudi_sync_task_submit(regclass, regclass, text, text, interval) 描述:功能与hudi_sync_task_submit(regclass, regclass, text, text)一致,不同之处在于,用户可以额外指定一个interval类型入参,用于指定任务的调度周期,取值范围为5秒至24小时。该函数仅8.3.0及以上版本支持。 返回值类型:text 同步目标表必须包含主键,且主键需要与hudi recordkey一致。 如果hudi表包含precombine字段,那么同步目标表也必须包含与之对应的字段。 如果同步目标表只包含主键(除了主键外没有其他字段),则无法正常提交同步任务。 用户需要有同步目标表的insert和update权限、HUDI外表的select权限,否则无法正常提交同步任务。 示例: 12345 SELECT hudi_sync_task_submit('public.hudi_sync_i','public.hudi_mor_ft','_hoodie_commit_time, col_bigint, col_text', '_hoodie_commit_time, col_bigint, col_text', '10 minute 30second'); hudi_sync_task_submit-------------------------------------- 646610bc-cdd1-0d00-d07d-b57e89a0fffe(1 row)
  • hudi_sync_task_submit(regclass, regclass) 描述:提交Hudi自动同步任务。第一个入参为同步目标表,第二个入参为HUDI外表。提交任务成功会返回任务的task-id。 返回值类型:text 同步目标表必须包含主键,且主键需要与hudi recordkey一致。 如果hudi表包含precombine字段,那么同步目标表也必须包含与之对应的字段。 如果同步目标表只包含主键(除了主键外没有其他字段),则无法正常提交同步任务。 用户需要有同步目标表的insert和update权限、HUDI外表的select权限,否则无法正常提交同步任务。 示例: 12345 SELECT hudi_sync_task_submit('public.hudi_sync_i','public.hudi_mor_ft'); hudi_sync_task_submit-------------------------------------- 6465efe2-3ea1-0b00-dde5-b57dfb30fffe(1 row)
共100000条