华为云用户手册

  • pgxc_archive_scan_residualfiles() 描述:用于归档所有节点上残留文件记录。该函数为集群级函数,仅支持在CN执行,与当前所在的数据库无关。不支持备机执行。 返回值类型:record 函数返回字段如下: 名称 类型 描述 node_name text 主备节点共用的统一名称。 instance_id text 记录残留文件所在的节点名称。 archive text 归档后的本地文件夹路径。OBS路径的残留文件归档在对应OBS数据库目录下。 count int 归档文件夹中的文件数量。 size int 归档文件夹中的文件大小。 示例: 1 2 3 4 5 6 SELECT * FROM pgxc_archive_scan_residualfiles(); node_name | instance_id | archive | count | size --------------+--------------+--------------------------------------------------------------+-------+------ datanode1 | datanode1 | pg_residualfiles/archive/pgscrf_archive_20231106103246489550 | 1 | 0 coordinator1 | coordinator1 | pg_residualfiles/archive/pgscrf_archive_20231106103246592449 | 1 | 0 (2 rows)
  • pgxc_get_scan_residualfiles() 描述:用于获取所有节点上残留文件记录。该函数为集群级函数,仅支持在CN执行,与当前所在的数据库无关。不支持备机执行。 返回值类型:record 函数返回字段如下: 名称 类型 描述 node_name text 主备节点共用的统一名称。 instance_id text 记录残留文件所在的节点名称。 handled bool 残留文件是否已经被移动或者被更改。 dbname text 所属数据库名称。 residualfile text 残留文件路径。 size int 残留文件大小,OBS上残留文件该项为0。 inode int 残留文件在文件系统的索引节点号,OBS路径的残留文件该项为0。 atime time 残留文件上一次访问时间,OBS路径的残留文件该项为空。 mtime time 残留文件上一次修改时间,OBS路径的残留文件该项为空。 ctime time 残留文件上一次状态改动时间,OBS路径的残留文件该项为空。 filepath text 记录残留文件信息的元文件本地路径。 notes text 注释。 示例: 1 2 3 4 5 6 7 SELECT * FROM pgxc_get_scan_residualfiles(); node_name | instance_id | handled | dbname | residualfile | size | inode | atime | mtime | ctime | filepath | notes --------------+--------------+---------+----------+------------------------------------------------------------------------------------------------------------------------------+------+---------+------------------------+------------------------+------------------------+----------------------------------------+------- datanode1 | datanode1 | f | postgres | base/15854/19863 | 0 | 2939427 | 2023-11-06 09:54:15+08 | 2023-11-06 09:54:15+08 | 2023-11-06 09:54:15+08 | pgscrf_meta_15854_20231106095437555205 | coordinator1 | coordinator1 | f | postgres | /test/obsview/cudesc_check/user1/obs.xxx.com/cu_obs_tbs/tablespace_secondary/15854/19865 | 0 | 0 | | | | pgscrf_meta_15854_20231106095438240991 | (2 rows)
  • pgxc_scan_residualfiles() 描述:用于扫描所有节点上当前数据库的残留文件记录。该函数为集群级函数,仅支持在CN执行,与连接CN上当前所在的数据库相关。不支持备机执行。 参数类型: 无。 返回值类型:record 函数返回字段如下: 名称 类型 描述 node_name text 主备节点共用的统一名称。 instance_id text 记录残留文件所在的节点名称。 pgscrf text 记录残留文件信息的元文件本地路径。
  • pg_get_scan_residualfiles() 描述:用于获取当前节点的所有残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。不支持备机执行。 返回值类型:record 函数返回字段如下: 名称 类型 描述 handled bool 残留文件是否已经被移动或者被更改。 dbname text 所属数据库名称。 residualfile text 残留文件路径。 size int 残留文件大小,OBS路径的残留文件该项为0。 inode int 残留文件在文件系统的索引节点号,OBS上残留文件该项为0。 atime time 残留文件上一次访问时间,OBS路径的残留文件该项为空。 mtime time 残留文件上一次修改时间,OBS路径的残留文件该项为空。 ctime time 残留文件上一次状态改动时间,OBS路径的残留文件该项为空。 filepath text 记录残留文件信息的元文件本地路径。 notes text 注释。 示例: 1 2 3 4 5 6 7 SELECT * FROM pg_get_scan_residualfiles(); handled | dbname | residualfile | size | inode | atime | mtime | ctime | filepath | notes ---------+----------+------------------------------------------------------------------------------------------------------------------------------+------+-------+-------+-------+-------+----------------------------------------+- ------ f | postgres | /test/obsview/cudesc_check/user1/obs.xxx.com/cu_obs_tbs/tablespace_secondary/15854/19865 | 0 | 0 | | | | pgscrf_meta_15854_20231106095438240991 | (1 row)
  • pg_obs_file_size(scheme_name.tablename,partition_name) 描述:获取OBS上分区表分区的列存CU文件名、文件大小信息,仅对列存版本colversion为3的表生效。 返回值类型:record 函数参数字段如下: 名称 类型 描述 scheme_name.tablename regclass 主表的schema.tablename/tablename/oid。 partition_name cstring 分区表表名。 示例: 1 2 3 4 5 6 7 8 SELECT pg_obs_file_size('public.t2_col_part_obs','p1'); pg_obs_file_size ---------------------------- (C1_16777266462721.0,1024) (C1_16777266429953.0,1024) (C1_16777249734657.0,1024) (C1_16777249701889.0,1024) (4 rows)
  • meta_cache_manual_append(scheme_name, rel_name) 描述:在下一次语句执行时,CN将对目标表元数据进行打包,并发送给只读DN。建议在技术支持指导下使用。 返回值类型:void。 函数参数字段如下: 名称 类型 描述 scheme_name text 目标表的scheme名称。 rel_name text 目标表表名。 示例: 1 SELECT meta_cache_manual_append('public','t1_col_obs');
  • pg_scan_residualfiles() 描述:用于扫描当前节点所在数据库的所有残留文件记录。连接到CN执行时,扫描当前CN节点所在数据库的本地残留文件和OBS全部残留文件。连接到DN执行时,扫描当前DN节点所在数据库的本地残留文件。该函数为库级函数,只针对当前数据库。不支持备机执行。 返回值类型:record 函数返回字段如下: 名称 类型 描述 pgscrf text 记录残留文件信息的元文件本地路径。
  • pg_obs_file_size(scheme_name.tablename) 描述:获取OBS上的表或者分区的CU文件名、文件大小信息,仅对列存版本colversion为3的表生效。 返回值类型:record 函数参数字段如下: 名称 类型 描述 scheme_name.tablename regclass 主表的schema.tablename/tablename/oid,或者分区表的OID。如果存在主表OID和分区OID相同的场景,建议使用表名作为入参。 示例: 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 --入参为tablename: SELECT pg_obs_file_size('t2_col_part_obs'); pg_obs_file_size ---------------------------- (C1_16777266462721.0,1024) (C1_16777266429953.0,1024) (C1_16777249734657.0,1024) (C1_16777249701889.0,1024) (4 rows) --入参为schema.tablename SELECT pg_obs_file_size('public.t2_col_part_obs'); pg_obs_file_size ---------------------------- (C1_16777266462721.0,1024) (C1_16777266429953.0,1024) (C1_16777249734657.0,1024) (C1_16777249701889.0,1024) (4 rows) --入参为oid SELECT pg_obs_file_size(16593); pg_obs_file_size ---------------------------- (C1_16777266462721.0,1024) (C1_16777266429953.0,1024) (C1_16777249734657.0,1024) (C1_16777249701889.0,1024) (4 rows)
  • 示例 OBS IO Scheduler查询的统计内容: 1 2 3 4 5 6 7 8 9 10 11 SELECT * FROM pgxc_obs_io_scheduler_periodic_stats; node_name | io_type | recent_throttled_req_num | total_throttled_req_num | last_throttled_dur(s) | waiting_req_num | mean_tps | mean_req_size(KB) | mean_req_latency(ms) | max_req_latency(ms) | mean_bps(KB/s) | duration(s) --------------+---------+--------------------------+-------------------------+-----------------------+-----------------+----------+-------------------+----------------------+---------------------+----------------+------------- dn_6001_6002 | S | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 155 dn_6001_6002 | R | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 155 dn_6001_6002 | W | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 155 cn_5001 | S | 0 | 0 | 0 | 0 | .03 | 0 | 207 | 519 | 0 | 155 cn_5001 | R | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 155 cn_5001 | W | 0 | 0 | 0 | 0 | .01 | 0 | 288 | 288 | 0 | 155 (6 rows) 如果需要显示“mean_tps”数值中小数点前的0,需要在behavior_compat_options参数中设置display_leading_zero(浮点数显示配置项)再查询视图: set behavior_compat_options='display_leading_zero'; SELECT * FROM pgxc_obs_io_scheduler_periodic_stats; node_name | io_type | recent_throttled_req_num | total_throttled_req_num | last_throttled_dur(s) | waiting_req_num | mean_tps | mean_req_size(KB) | mean_req_latency(ms) | max_req_latency(ms) | mean_bps(KB/s) | duration(s) --------------+---------+--------------------------+-------------------------+-----------------------+-----------------+----------+-------------------+----------------------+---------------------+----------------+------------- dn_6001_6002 | S | 0 | 0 | 0 | 0 | 0.36 | 0 | 132 | 326 | 0 | 177 dn_6001_6002 | R | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 177 dn_6001_6002 | W | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 177 cn_5001 | S | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 177 cn_5001 | R | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 177 cn_5001 | W | 0 | 0 | 0 | 0 | 0.00 | 0 | 0 | 0 | 0 | 177
  • 操作步骤 参见创建DWS 3.0集群创建DWS 3.0集群,集群创建后默认会转换成逻辑集群v3_logical。 通过节点扩容方式增加3个节点到弹性集群,再添加逻辑集群lc2。 创建用户u1,并关联逻辑集群v3_logical。 1 CREATE USER u1 with SYSADMIN NODE GROUP "v3_logical" password "Password@123"; 创建用户u2,并关联逻辑集群lc2。 1 CREATE USER u2 with SYSADMIN NODE GROUP "lc2" password "Password@123"; 以u1登录数据库,创建表t1和t2,并插入测试数据。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CREATE TABLE public.t1 ( id integer not null, data integer, age integer ) WITH (ORIENTATION =COLUMN, COLVERSION =3.0) DISTRIBUTE BY ROUNDROBIN; CREATE TABLE public.t2 ( id integer not null, data integer, age integer ) WITH (ORIENTATION = COLUMN, COLVERSION =3.0) DISTRIBUTE BY ROUNDROBIN; INSERT INTO public.t1 VALUES (1,2,10),(2,3,11); INSERT INTO public.t2 VALUES (1,2,10),(2,3,11); 以u2登录数据库,执行以下命令查询t1和写入数据。 从结果可得出,实现用户u2跨逻辑集群进行查询和写入数据的能力。 1 2 SELECT * FROM t1; INSERT INTO t1 SELECT * FROM t2;
  • 表操作示例 重命名表: 1 ALTER TABLE CUSTOMER RENAME TO CUSTOMER_t; 给表增加一个新的约束: 1 ALTER TABLE customer_address ADD PRIMARY KEY(ca_address_sk); 根据已有唯一索引为表增加主键约束或唯一约束。 先给表CUSTOMER创建唯一索引CUSTOMER_constraint1,然后根据已有唯一索引增加主键约束,并对前面创建的索引rename: 1 2 CREATE UNIQUE INDEX CUSTOMER_constraint1 ON CUSTOMER(C_CUSTKEY); ALTER TABLE CUSTOMER ADD CONSTRAINT CUSTOMER_constraint2 PRIMARY KEY USING INDEX CUSTOMER_constraint1; 重命名表约束: 1 ALTER TABLE CUSTOMER RENAME CONSTRAINT CUSTOMER_constraint2 TO CUSTOMER_constraint; 删除表约束: 1 ALTER TABLE CUSTOMER DROP CONSTRAINT CUSTOMER_constraint; 给表增加一个索引: 1 ALTER TABLE CUSTOMER ADD INDEX CUSTOMER_index(C_CUSTKEY); 删除表索引: 1 2 ALTER TABLE CUSTOMER DROP INDEX CUSTOMER_index; ALTER TABLE CUSTOMER DROP KEY CUSTOMER_index; 向在一个列存表中添加局部聚簇列: 1 ALTER TABLE customer_address ADD CONSTRAINT customer_address_cluster PARTIAL CLUSTER KEY(ca_address_sk); 删除一个列存表中的局部聚簇列: 1 ALTER TABLE customer_address DROP CONSTRAINT customer_address_cluster; 切换列存表的存储格式: 1 ALTER TABLE customer_address SET (COLVERSION = 1.0); 修改表的分布方式: 1 ALTER TABLE customer_address DISTRIBUTE BY REPLICATION; 修改表模式: 1 ALTER TABLE customer_address SET SCHEMA tpcds; 单表冷热切换: 1 ALTER TABLE cold_hot_table REFRESH STORAGE; 列存分区表修改为冷热表: 1 2 3 4 5 6 7 CREATE table test_1(id int,d_time date) WITH(ORIENTATION=COLUMN) DISTRIBUTE BY HASH (id) PARTITION BY RANGE (d_time) (PARTITION p1 START('2022-01-01') END('2022-01-31') EVERY(interval '1 day')) ALTER TABLE test_1 SET (storage_policy = 'LMT:100'); 修改表缓存策略(仅云原生3.0版本支持): ALTER TABLE orders SET (cache_policy = 'NONE');
  • 参数说明 IF EXISTS 如果不存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表不存在。 table_name [*] | ONLY table_name | ONLY ( table_name ) table_name是需要修改的表名。 若声明了ONLY选项,则只有那个表被更改。若未声明ONLY,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。 constraint_name 要删除的现有约束的名字。 index_name 索引名称。 storage_parameter 表的存储参数的名字。 分区管理新增的两个选项: PERIOD(interval类型) 设置分区管理中自动创建分区的周期。 PERIOD的范围要求以及开启该功能的约束请参考CREATE TABLE PARTITION。 在建表时,如果没有设置该参数,可以通过set的方式添加该参数,并开启自动创建分区功能;如果之前已经设置该参数,则通过set的方式修改该参数。 用户可以通过reset该参数的方式关闭自动创建分区功能,但是在自动删除分区功能存在的情况下,不支持关闭自动创建分区功能。 TTL(interval类型) 设置分区管理中自动删除分区的分区过期时间。 TTL的范围要求以及开启该功能的约束请参考CREATE TABLE PARTITION。 在建表时,如果没有设置该参数,可以通过set的方式添加该参数,并开启自动删除分区功能;如果之前已经设置该参数,则通过set的方式修改该参数。 用户可以通过reset该参数的方式关闭自动删除分区功能。 new_owner 表所属新的拥有者的名字。 new_tablespace 表所属新的表空间名字。 column_name,column_1_name, column_2_name 现存的或新字段的名称。 data_type 新字段的类型,或者现存字段的新类型。 compress_mode 表字段的压缩可选项,当前仅对行存表有效。该子句指定该字段优先使用的压缩算法。 collation 字段排序规则名称。可选字段COLLATE指定了新字段的排序规则,如果省略,排序规则为新字段的默认类型。 USING expression USING子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个USING子句。 ALTER TYPE的USING选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用ALTER TYPE语法做非常普遍性的转换。因为这个灵活性,USING表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在USING子句,ALTER TYPE也可能无法把缺省值转换成新的类型。在这种情况下,应该用DROP DEFAULT先删除缺省,执行ALTER TYPE,然后使用SET DEFAULT增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。 NOT NULL | NULL 设置列是否允许空值。 integer 带符号的整数常值。当使用PERCENT时表示按照表数据的百分比收集统计信息,integer的取值范围为0-100。 attribute_option 属性选项。 PLAIN | EXTERNAL | EXTENDED | MAIN 字段存储模式。 PLAIN必需用于定长的数值(比如integer)并且是内联的、不压缩的。 MAIN用于内联、可压缩的数据。 EXTERNAL用于外部保存、不压缩的数据。使用EXTERNAL将令在text和bytea字段上的子字符串操作更快,但付出的代价是增加了存储空间。 EXTENDED用于外部的压缩数据,EXTENDED是大多数支持非PLAIN存储的数据的缺省。 CHECK ( expression ) 每次将要插入的新行或者将要被更新的行必须使表达式结果为真才能成功,否则会抛出一个异常并且不会修改数据库。 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 目前,CHECK表达式不能包含子查询也不能引用除当前行字段之外的变量。 DEFAULT default_expr 给字段指定缺省值。 缺省表达式的数据类型必须和字段类型匹配。 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 default_expr中若使用后缀操作符(如!),需使用括号括起来。 UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters UNIQUE ( column_name [, ... ] ) [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters UNIQUE约束表示表里的一个或多个字段的组合必须在全表范围内唯一。 其中[ NULLS [ NOT ] DISTINCT | NULLS IGNORE ]字段用来指定Unique唯一索引中索引列NULL值的处理方式。 默认取值:该参数默认取值为空,即NULL值可重复插入。 在对插入的新数据和表中原始数据进行列的等值比较时,对于NULL值有以下三种处理方式: NULLS DISTINCT:NULL值互不相等,即NULL值可重复插入。 NULLS NOT DISTINCT:NULL值相等。若索引列全为NULL,则NULL值不可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。 NULLS IGNORE:在等值比较时跳过NULL值。若索引列全为NULL,则NULL值可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。 三种处理方式具体的行为如下表所示: 表1 唯一索引中索引列NULL值的处理方式 字段控制 索引列全为NULL 部分索引列为NULL NULLS DISTINCT 可重复插入 可重复插入 NULLS NOT DISTINCT 不可重复插入 非NULL值相等,不可插入;非NULL值不相等,则插入成功 NULLS IGNORE 可重复插入 非NULL值相等,不可插入;非NULL值不相等,则插入成功 PRIMARY KEY index_parameters PRIMARY KEY ( column_name [, ... ] ) index_parameters 主键约束表明表中的一个或者一些字段只能包含唯一(不重复)的非NULL值。 DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE 设置该约束是否可推迟,列存暂不支持。 DEFERRABLE:可以推迟到事务结尾使用SET CONSTRAINTS命令检查。 NOT DEFERRABLE:在每条命令之后马上检查。 INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。 INITIALLY DEFERRED:只有在事务结尾才检查它。 WITH ( {storage_parameter = value} [, ... ] ) 为表或索引指定一个可选的存储参数。 COMPRESS|NOCOMPRESS NOCOMPRESS:如果指定关键字NOCOMPRESS则不会修改表的现有压缩特性。 COMPRESS:如果指定COMPRESS关键字,则对该表进行批量插入元组时触发该特性。 new_table_name 修改后新的表名称。 new_column_name 表中指定列修改后新的列名称。 new_constraint_name 修改后表约束的新名称。 new_schema 修改后新的模式名称。 CASCADE 级联删除依赖于被依赖字段或者约束的对象(比如引用该字段的视图)。 RESTRICT 如果字段或者约束还有任何依赖的对象,则拒绝删除该字段。这是缺省行为。 schema_name 表所在的模式名称。 cache_policy 表缓存策略,仅云原生3.0版本支持,具体取值参见▪cache_policy(仅云原生3.0版本支...
  • 语法格式 修改表的定义。 1 2 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) } action [, ... ]; 其中具体表操作action可以是以下子句之一: 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 column_clause | ADD table_constraint [ NOT VALID ] | ADD table_constraint_using_index | VALIDATE CONSTRAINT constraint_name | DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] | CLUSTER ON index_name | SET WITHOUT CLUSTER | SET ( {storage_parameter = value} [, ... ] ) | RESET ( storage_parameter [, ... ] ) | OWNER TO new_owner | SET TABLESPACE new_tablespace | SET {COMPRESS|NOCOMPRESS} | DISTRIBUTE BY { REPLICATION | ROUNDROBIN | { HASH ( column_name [,...] ) } } | TO { GROUP groupname | NODE ( nodename [, ... ] ) } | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) | DISABLE TRIGGER [ trigger_name | ALL | USER ] | ENABLE TRIGGER [ trigger_name | ALL | USER ] | ENABLE REPLICA TRIGGER trigger_name | ENABLE ALWAYS TRIGGER trigger_name | DISABLE ROW LEVEL SECURITY | ENABLE ROW LEVEL SECURITY | FORCE ROW LEVEL SECURITY | NO FORCE ROW LEVEL SECURITY | REFRESH STORAGE ADD table_constraint [ NOT VALID ] 给表增加一个新的约束。 ADD table_constraint_using_index 根据已有唯一索引为表增加主键约束或唯一约束。 VALIDATE CONSTRAINT constraint_name 验证一个外键或是一个使用NOT VALID选项创建的检查类约束,通过扫描全表来保证所有记录都符合约束条件。如果约束已标记为有效时,什么操作也不会发生。 DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] 删除一个表上的约束。 CLUSTER ON index_name 为将来的CLUSTER操作选择默认索引。实际上并没有重新盘簇化处理该表。 SET WITHOUT CLUSTER 从表中删除最新使用的CLUSTER索引。这样会影响将来那些没有声明索引的集群操作。 SET ( {storage_parameter = value} [, ... ] ) 修改表的一个或多个存储参数。 RESET ( storage_parameter [, ... ] ) 重置表的一个或多个存储参数。与SET一样,根据参数的不同可能需要重写表才能获得想要的效果。 OWNER TO new_owner 将表、序列、视图的属主改变成指定的用户。 SET {COMPRESS|NOCOMPRESS} 修改表的压缩特性。表压缩特性的改变只会影响后续批量插入的数据的存储方式,对已有数据的存储毫无影响。也就是说,表压缩特性的修改会导致该表中同时存在着已压缩和未压缩的数据。 DISTRIBUTE BY { REPLICATION | ROUNDROBIN | { HASH ( column_name [,...] ) } } 修改表的分布方式,在修改表分布信息的同时会将表数据在物理上按新分布方式重新分布,修改完成后建议对被修改表执行ANALYZE,以便收集全新的统计信息。 本操作属于重大变更操作,涉及表分布信息的修改以及数据的物理重分布,修改过程中会阻塞业务,修改完成后原有业务的执行计划会发生变化,请按照正规变更流程进行。 本操作属于资源密集操作,针对大表的分布方式修改,建议在计算和存储资源充裕情况下进行,保证整个集群和原表所在表空间有足够的剩余空间能存储一张与原表同等大小且按照新分布方式进行分布的表。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } 此语法仅在扩展模式(GUC参数support_extended_features为on时)下可用。该模式谨慎打开,主要供内部扩容工具使用,一般用户不应使用该模式。 ADD NODE ( nodename [, ... ] ) 此语法主要供内部扩容工具使用,一般用户不建议使用。 DELETE NODE ( nodename [, ... ] ) 此语法主要供内部缩容工具使用,一般用户不建议使用。 DISABLE TRIGGER [ trigger_name | ALL | USER ] 禁用trigger_name所表示的单个触发器,或禁用所有触发器,或仅禁用用户触发器(此选项不包括内部生成的约束触发器,例如,可延迟唯一性和排除约束的约束触发器)。 应谨慎使用此功能,因为如果不执行触发器,则无法保证原先期望的约束的完整性。 ENABLE TRIGGER [ trigger_name | ALL | USER ] 启用trigger_name所表示的单个触发器,或启用所有触发器,或仅启用用户触发器。 ENABLE REPLICA TRIGGER trigger_name 触发器触发机制受配置变量session_replication_role的影响,当复制角色为“origin”(默认值)或“local”时,将触发简单启用的触发器。 配置为ENABLE REPLICA的触发器仅在会话处于“replica”模式时触发。 ENABLE ALWAYS TRIGGER trigger_name 无论当前复制模式如何,配置为ENABLE ALWAYS的触发器都将触发。 DISABLE/ENABLE ROW LEVEL SECURITY 开启或关闭表的行访问控制开关。 当开启行访问控制开关时,如果未在该数据表定义相关行访问控制策略,数据表的行级访问将不受影响;如果关闭表的行访问控制开关,即使定义了行访问控制策略,数据表的行访问也不受影响。详细信息参见CREATE ROW LEVEL SECURITY POLICY章节。 NO FORCE/FORCE ROW LEVEL SECURITY 强制开启或关闭表的行访问控制开关。 默认情况,表所有者不受行访问控制特性影响,但当强制开启表的行访问控制开关时,表的所有者(不包含系统管理员用户)会受影响。系统管理员可以绕过所有的行访问控制策略,不受影响。 REFRESH STORAGE 根据OBS冷热表storage_policy所定义的规则,将符合条件的本地热分区切换为存储在OBS上的冷分区。 例如创建OBS冷热表时,设置storage_policy 为 'LMT:10',则在执行该操作时可将10日前无修改的分区切为冷存储,存至OBS中。 其中列相关的操作column_clause可以是以下子句之一: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] | MODIFY [ COLUMN ] column_name data_type | MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NULL | MODIFY [ COLUMN ] column_name DEFAULT default_expr | MODIFY [ COLUMN ] column_name ON UPDATE on_update_expr | MODIFY [ COLUMN ] column_name COMMENT comment_text | DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] | ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] | ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } | ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL | ALTER [ COLUMN ] column_name SET STATIS TICS [PERCENT] integer | ADD STATISTI CS (( column_1_name, column_2_name [, ...] )) | ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ( { { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] } [, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] LOCAL [ ( { PARTITION index_partition_name } [, ...] ) ] [ WITH ( { storage_parameter = value } [, ...] ) ] | ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ WHERE predicate ] | DROP { INDEX | KEY } index_name | CHANGE [ COLUMN ] old_column_name new_column_name data_type [ [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | [ CONSTRAINT constraint_name ] NULL | DEFAULT default_expr | COMMENT 'text' ] | DELETE STATISTICS (( column_1_name, column_2_name [, ...] )) | ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] 向表中增加一个新的字段。用ADD COLUMN增加一个字段,所有表中现有行都初始化为该字段的缺省值(如果没有声明DEFAULT子句,值为NULL)。 ADD ( { column_name data_type [ compress_mode ] } [, ...] ) 向表中增加多列。 MODIFY [ COLUMN ] column_name data_type 修改表已存在字段的数据类型。 MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] 为表的某列添加not null约束,列存表暂不支持。 MODIFY [ COLUMN ] column_name [ CONSTRAINT constraint_name ] NULL 为表的某列移除not null约束。 MODIFY [ COLUMN ] column_name DEFAULT default_expr 修改表的default值。 MODIFY [ COLUMN ] column_name ON UPDATE on_update_expr 修改表中指定列的on update表达式,该列必须为timestamp类型或者timestamptz类型,当on_update_expr为NULL值时,则为删除ON UPDATE子句。 MODIFY [ COLUMN ] column_name COMMENT comment_text 修改表的注释信息。 DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如外键参考、视图等。 DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。 ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ] 改变表字段的数据类型,只允许相同大类的类型转换(数值之间,字符串之间,时间之间等)。该字段涉及的索引和简单的表约束将被自动地转换为使用新的字段类型,方法是重新分析最初提供的表达式。 ALTER TYPE要求重写整个表的特性有时候是一个优点,因为重写的过程消除了表中没用的空间。比如,要想立刻回收被一个已经删除的字段占据的空间,最快的方法是 1 ALTER TABLE table ALTER COLUMN anycol TYPE anytype; 这里的anycol是任何在表中还存在的字段,而anytype是和该字段的原类型一样的类型。这样的结果是在表上没有任何可见的语意的变化,但是这个命令强制重写,这样就删除了不再使用的数据。 ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT } 为一个字段设置或者删除缺省值。请注意缺省值只应用于随后的INSERT命令,它们不会修改表中已经存在的行。也可以为视图创建缺省,这个时候它们是在视图的ON INSERT规则应用之前插入到INSERT句中的。 ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL 修改一个字段是否允许NULL值或者拒绝NULL值。如果表在字段中包含非NULL,则只能使用SET NOT NULL。 ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer 为随后的ANALYZE操作设置针对每个字段的统计收集目标。目标的范围可以在0到10000之内设置。设置为-1时表示重新恢复到使用系统缺省的统计目标。 ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ( { { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] } [, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] LOCAL [ ( { PARTITION index_partition_name } [, ...] ) ] [ WITH ( { storage_parameter = value } [, ...] ) ] 为表的分区表创建索引,具体参数可参考CREATE INDEX。 ADD { INDEX | UNIQUE [ INDEX ] } [ index_name ] ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] ) [ USING method ] [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] [ COMMENT 'text' ] [ WITH ( {storage_parameter = value} [, ... ] ) ] [ WHERE predicate ] 在表上创建索引,具体参数可参考CREATE INDEX。 DROP { INDEX | KEY } index_name 删除一个表上的索引。 CHANGE [ COLUMN ] old_column_name new_column_name data_type [ [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | [ CONSTRAINT constraint_name ] NULL | DEFAULT default_expr | COMMENT 'text' ] 修改表中列信息,可将旧列名修改成新列名,以及修改列字段信息。 {ADD | DELETE} STATISTICS ((column_1_name, column_2_name [, ...])) 用于添加和删除多列统计信息声明(不实际进行多列统计信息收集),以便在后续进行全表或全库analyze时进行多列统计信息收集。每组多列统计信息最多支持32列。不支持添加/删除多列统计信息声明的表:系统表、外表。 ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] ) ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) 设置/重置属性选项。 属性选项定义的参数有:n_distinct、n_distinct_inherited和cstore_cu_sample_ratio。n_distinct 设置并固定表的distinct值统计信息,n_distinct_inherited 设置并固定继承表的distinct值统计信息,cstore_cu_sample_ratio 设置对cstore列存表进行analyze时所选CU的比例。目前,禁止SET/RESET n_distinct_inherited参数。 n_distinct 手动设置该列的distinct值统计信息。 取值范围:-1.0 ~ INT_MAX 默认值:0,表示不设置。 n_distinct_inherited 手动设置继承表的该列的distinct值统计信息。 取值范围:-1.0 ~ INT_MAX 默认值:0,表示不设置。 cstore_cu_sample_ratio 设置列存表执行analyze,计算需要采样的CU个数时,需要扩大的倍数。 取值范围:1.0 ~ 10000.0 默认值:1.0 ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } 为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。仅支持对行存表的设置;对列存表没有意义,执行时报错。SET STORAGE本身并不改变表上的任何东西,只是设置将来的表操作时,建议使用的策略。 其中列约束column_constraint为: 1 2 3 4 5 6 7 8 [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK ( expression ) | DEFAULT default_expr | UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] index_parameters | PRIMARY KEY index_parameters } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中列的压缩可选项compress_mode为: 1 [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ] 其中根据已有唯一索引为表增加主键约束或唯一约束table_constraint_using_index为: 1 2 3 [ CONSTRAINT constraint_name ] { UNIQUE | PRIMARY KEY } USING INDEX index_name [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中表约束table_constraint为: 1 2 3 4 5 6 [ CONSTRAINT constraint_name ] { CHECK ( expression ) | UNIQUE [ NULLS [ NOT ] DISTINCT | NULLS IGNORE ] ( column_name [, ... ] ) index_parameters | PRIMARY KEY ( column_name [, ... ] ) index_parameters } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 其中索引参数index_parameters为: 1 2 [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ]
  • 注意事项 只有表的所有者或者被授予了表ALTER权限的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。若要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员。 不支持修改存储参数ORIENTATION。 SET SCHEMA操作不支持修改为系统内部模式,当前仅支持用户模式之间的修改。 列存表支持PARTIAL CLUSTER KEY,不支持外键表级约束。列存表从8.1.1版本开始支持主键和唯一表级约束。 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名字、支持删除字段DROP COLUMN。对于添加的字段和修改的字段类型要求是列存支持的数据类型。ALTER TYPE的USING选项只支持常量表达式和涉及本字段的表达式,暂不支持涉及其他字段的表达式。 列存表支持的字段约束包括NULL、NOT NULL和DEFAULT常量值;对字段约束的修改,当前支持对DEFAULT值的修改(SET DEFAULT)、删除(DROP DEFAULT)和NOT NULL约束的删除; 支持对列存表添加非空约束NOT NULL以及主键约束。该约束仅8.2.0及以上集群版本支持。 修改列存表存储参数COLVERSION或者enable_delta时,不能与其他ALTER操作同时进行。
  • PG_PARTITION PG_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上toast表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。 表1 PG_PARTITION字段 名称 类型 描述 relname name 分区表、分区、分区上toast表和分区索引的名称。 parttype "char" 对象类型: 'r':partitioned table 'p':table partition 'x':index partition 't':toast table parentid oid 当对象为分区表或分区时,此字段表示分区表在PG_CLASS中的OID。 当对象为index partition时,此字段表示所属分区表索引(partitioned index)的OID。 rangenum integer 保留字段。 intervalnum integer 保留字段。 partstrategy "char" 分区表分区策略,现在仅支持: 'r':范围分区。 'v':数值分区。 'l':列表分区。 relfilenode oid table partition、index partition、分区上toast表的物理存储位置。 reltablespace oid table partition、index partition、分区上toast表所属表空间的OID。 relpages double precision 统计信息:table partition、index partition的数据页数量。 reltuples double precision 统计信息:table partition、index partition的元组数。 relallvisible integer 统计信息:table partition、index partition的可见数据页数。 reltoastrelid oid table partition所对应toast表的OID。 reltoastidxid oid table partition所对应toast表的索引的OID。 indextblid oid index partition对应table partition的OID。 indisusable boolean 分区索引是否可用。 reldeltarelid oid Delta表的OID。 reldeltaidx oid Delta表的索引表的OID。 relcudescrelid oid CU描述表的OID。 relcudescidx oid CU描述表的索引表的OID。 relfrozenxid xid32 冻结事务ID号。 为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。 intspnum integer 间隔分区所属表空间的个数。 partkey int2vector 分区键的列号。 intervaltablespace oidvector 间隔分区所属的表空间,间隔分区以round-robin方式落在这些表空间内。 interval text[] 间隔分区的间隔值。 boundaries text[] 范围分区和间隔分区的上边界。 transit text[] 间隔分区的跳转点。 reloptions text[] 设置partition的存储属性,与pg_class.reloptions的形态一样,用"keyword=value"格式的字符串来表示 ,目前用于在线扩容的信息搜集。 relfrozenxid64 xid 冻结事务ID号。 boundexprs pg_node_tree 分区边界表达式。 对于范围分区来说是分区上边界表达式。 对于列表分区来说是分区边界枚举值集合。 pg_node_tree数据类型是不可读的,可用如下表达式pg_get_expr把当前字段单翻译为可读信息。 1 2 3 4 5 6 SELECT pg_get_expr(boundexprs, 0) FROM pg_partition WHERE relname = 'country_202201'; pg_get_expr --------------------------------------------------------------- ROW(202201, 'city1'::text), ROW(202201, 'city2'::text) (1 row) relmetaversion xid 元数据版本信息,该字段仅云原生3.0版本支持。 父主题: 系统表
  • 应用示例 查询集群的CN和DN信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 select * from pgxc_node; node_name | node_type | node_port | node_host | node_port1 | node_host1 | hostis_primary | nodeis_primary | nodeis_preferred | node_id | sctp_port | control_port | sctp_port1 | control_port1 | nodeis_central --------------+-----------+-----------+----------------+------------+----------------+----------------+----------------+----------------- -+-------------+-----------+--------------+------------+---------------+---------------- dn_6001_6002 | D | 40000 | 192.**.***.**1 | 45000 | 192.**.**.**2 | t | f | f | 1644780306 | 40002 | 40003 | 45002 | 45003 | f dn_6003_6004 | D | 40000 | 192.**.**.**2 | 45000 | 192.**.**.**3 | t | f | f | -966646068 | 40002 | 40003 | 45002 | 45003 | f dn_6005_6006 | D | 40000 | 192.**.**.**3 | 45000 | 192.**.***.**1 | t | f | f | 868850011 | 40002 | 40003 | 45002 | 45003 | f cn_5001 | C | 8000 | 192.**.***.**1 | 8000 | 192.**.***.**1 | t | f | f | 1120683504 | 8002 | 8003 | 0 | 0 | f cn_5002 | C | 8000 | 192.**.**.**2 | 8000 | 192.**.**.**2 | t | f | f | -1736975100 | 8002 | 8003 | 0 | 0 | f cn_5003 | C | 8000 | localhost | 8000 | localhost | t | f | f | -125853378 | 8002 | 8003 | 0 | 0 | t (6 rows)
  • PG_NAMESPACE PG_NAMESPACE系统表存储schema相关的信息。云原生数仓3.0版本新增nsptype字段,用于区分external schema和普通schema。 表1 PG_NAMESPACE字段 名称 类型 描述 nspname name 命名空间的名称。 nspowner oid 命名空间的所有者。 nsptimeline bigint 在DN上创建此命名空间时的时间线。此字段为内部使用,仅在DN上有效。 nspacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 permspace bigint schema永久表空间限额。 usedspace bigint schema已用永久表空间大小。 nsptype char 区分external schema和普通schema。 'e',表示为external schema。 'i',表示为普通schema。 父主题: 系统表
  • 示例 查询文件缓存所使用的硬盘的信息: 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
  • PGXC_GROUP PGXC_GROUP系统表存储节点组信息,在DWS 3.0中,每个逻辑集群节点组称为一个VW,而在存储KV层,每一个VW会和一个vgroup相对应。 表1 PGXC_GROUP字段 名称 类型 描述 group_name name 节点组名称。 in_redistribution "char" 是否需要重分布。 n表示NodeGroup没有再进行重分布。 y表示NodeGroup是重分布过程中的源节点组。 t表示NodeGroup是重分布过程中的目的节点组。 group_members oidvector_extend 节点组的DN节点OID列表。 group_buckets text 分布数据桶的集合。 is_installation boolean 是否是安装节点组。 group_acl aclitem[] 访问权限。 group_kind "char" 节点组类型。 i表示安装节点组,包含所有DN节点。 n表示普通非逻辑集群节点组。 v表示逻辑集群节点组。 e表示弹性集群节点组 r表示复制表节点组,只能用于创建复制表,可以包含一个或多个逻辑集群节点组。 group_ckpt_csn xid 节点组最近一次执行增量抽取的CSN。 vgroup_id xid 节点组对应vgroup的ID标识。 vgroup_bucket_count oid 节点组对应vgroup的桶数目。 group_ckpt_time timestamp with time zone 节点组最近一次执行增量抽取的物理时间。 apply_kv_duration integer 节点组最近一次执行增量抽取中增量扫描耗时(单位为秒)。 ckpt_duration integer 节点组最近一次执行增量抽取中checkpoint耗时(单位为秒)。 group_flags integer 节点组标志,当前仅第一个标志位有效,其他标志位当前版本未使用。 标志位1:为1表示节点组是只读逻辑集群,为0表示节点组是读写逻辑集群。 父主题: 系统表
  • 支持与限制 DWS 3.0对比于DWS 2.0的操作差异主要体现在华为云管理控制台操作和数据库操作两个方面。 其中,在管理控制台上支持的操作差异参见表1,支持的数据库能力参见表2。 表1 管理控制台操作 功能模块 功能模块 DWS 2.0 DWS 3.0 导航菜单 总览 支持 支持 集群管理 支持 支持 容灾管理 支持 不支持 快照管理 支持 支持 参数模块 支持 支持 事件管理 支持 支持 告警管理 支持 支持 连接客户端 支持 支持 总览 资源 支持 支持 告警 支持 支持 近期事件 支持 支持 集群监控指标(DMS) 支持 支持 集群管理 监控面板(DMS) 支持 支持 查看监控指标(Cloud Eye) 支持 支持 重启 支持 支持 扩容 支持 只支持离线扩容 重分布 支持 支持 查看重分布详情 支持 支持 重置密码 支持 支持 创建快照 支持 支持 解除只读 支持 支持 删除 支持 支持 管理CN节点 支持 支持 磁盘扩容 支持 支持 集群详情 基本信息 支持 支持 ELB负载均衡 支持 支持 资源池 支持 支持 逻辑集群 支持 支持 快照 支持 支持 参数修改 支持 支持 安全设置 支持 支持 MRS 数据源 支持 支持 监控面板 支持 支持 标签 支持 支持 节点管理 支持 支持 容灾管理 容灾管理 支持 不支持 快照管理 恢复 支持 支持 删除 支持 支持 复制 支持 支持 事件管理 事件管理(通用) 支持 支持 告警管理 告警管理 支持 支持 连接客户端 连接客户端 支持 支持 其他模块 巡检 支持 支持 智能运维 支持 支持 节点修复 支持 支持 租户侧温备 支持 支持 OpenApi 支持 不支持 表2 数据库操作 类别 语法 是否支持 基本功能 CREATE TABLE 支持 CREATE TABLE LIKE 支持 DROP TABLE 支持 INSERT 支持 COPY 支持 SELECT 支持 TRUNCATE 支持 EXPLAIN 支持 ANALYZE 支持 VACUUM 支持 ALTER TABLE DROP PARTITION 支持 ALTER TABLE ADD PARTITION 支持 ALTER TABLE SET WITH OPTION 支持 ALTER TABLE DROP COLUMN 支持 ALTER TABLE ADD COLUMN 支持 ALTER TABLE ADD NODELIST 支持 ALTER TABLE CHANGE OWNER 支持 ALTER TABLE RENAME COLUMN 支持 ALTER TABLE TRUNCATE PARTITION 支持 ALTER TABLE 其他 支持 CREATE INDEX 支持 DROP INDEX 支持 DELETE 支持 ALTER INDEX 支持 MERGE 支持 SELECT INTO 支持 UPDATE 支持 CREATE TABLE AS 支持 触发器 不支持 PRIMARY KEY 支持 UNIQUE CONSTRAINT 支持 UN LOG 表 支持 自定义类型 不支持 显式游标 支持 MySQL GroupBy 多列返回值 不支持 事务能力 子事务 支持 事务隔离级别 支持 高级功能 HStore存算分离 不支持 物化视图 不支持 存储过程 不支持 AUTO VACUUM 支持 AUTO ANALYZE 支持 GIS 不支持 表3 列存表支持的数据类型 类别 数据类型 描述 长度 数值类型 smallint 小范围整数,别名为INT2。 2 integer 常用的整数,别名为INT4。 4 bigint 大范围的整数,别名为INT8。 8 decimal 任意精度型。 可变长度 numeric 任意精度型。 可变长度 real 单精度浮点数。 4 double precision 双精度浮点数。 8 smallserial 二字节序列整型。 2 serial 四字节序列整型。 4 bigserial 八字节序列整型。 8 货币类型 money 货币金额。 8 字符类型 character varying(n), varchar(n) 变长字符串。 可变长度 character(n), char(n) 定长字符串。 n character、char 单字节内部类型。 1 text 变长字符串。 可变长度 nvarchar2 变长字符串。 可变长度 clob 文本大对象。 可变长度 日期/时间类型 timestamp with time zone 日期和时间,带时区。 8 timestamp without time zone 日期和时间。 8 date Oracle兼容模式下记录日期和时间;其他兼容模式下,记录日期。 Oracle兼容模式下,占存储空间8字节;其他兼容模式下,占存储空间4字节。 time without time zone 只用于一日内时间。 8 time with time zone 只用于一日内时间,带时区。 12 interval 时间间隔。 16
  • 示例 创建名称为ex1的EXTERNAL SCHEMA: 1 2 3 4 5 6 CREATE EXTERNAL SCHEMA ex1 WITH SOURCE hive DATABASE 'demo' SERVER hdfs_server METAADDRESS '***.***.***.***:***' CONFIGURATION '/MRS/config'
  • 注意事项 只要拥有当前数据库CREATE权限的用户,就可以创建外部SCHEMA。 创建命名对象时不可用EXTERNAL SCHEMA作为前缀修饰,即不支持在EXTERNAL SCHEMA下创建对象。目前只支持通过使用EXTERNAL SCHEMA对hive端创建的表进行SELECT、INSERT和INSERT OVERWRITE操作。 CREATE EXTERNAL SCHEMA不支持在新模式中创建对象的子命令。
  • 参数说明 schema_name 外部模式名字。 取值范围:字符串,要符合标识符的命名规范。 模式名不能和当前数据库里其他的模式重名。 模式的名字不可以“pg_”开头。 SOURCE 外部元数据存储引擎的类型,当前source_type仅支持Hive。 DATABASE 指定外部SCHEMA所对应的hive中数据库。 external schema与hive中的数据库是多对一的对应关系。 SERVER 取值范围:已存在的FOREIGN SERVER。 通过external schema关联foreign server以达到访问外部数据的目的。 METAADDRESS 表示hivemetastore通讯接口。 CONFIGURATION 表示hivemetastore相关配置文件存放路径。 如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH_PATH来查看当前搜索路径上的模式。
  • 语法格式 根据指定的名字创建EXTERNAL SCHEMA。 1 2 3 4 5 6 CREATE EXTERNAL SCHEMA schema_name WITH SOURCE source_type DATABASE 'db_name' SERVER srv_name METAADDRESS 'address' CONFIGURATION 'confpath';
  • 示例 查询OBS IO Scheduler在每个节点读请求相关的统计信息。 1 2 3 4 5 6 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
  • 语法格式 根据指定的名字修改EXTERNAL SCHEMA。 1 2 3 4 5 6 ALTER EXTERNAL SCHEMA schema_name WITH SOURCE source_type DATABASE 'db_name' SERVER srv_name METAADDRESS 'address' CONFIGURATION 'confpath';
  • 参数说明 schema_name 外部模式名字。 取值范围:字符串,要符合标识符的命名规范。 模式名不能和当前数据库里其他的模式重名。 模式的名字不可以“pg_”开头。 SOURCE 外部元数据存储引擎的类型,当前source_type仅支持Hive。 DATABASE 指定外部SCHEMA所对应的hive中数据库。 external schema与hive中的数据库是多对一的对应关系。 SERVER 取值范围:已存在的FOREIGN SERVER。 通过external schema关联foreign server以达到访问外部数据的目的。 METAADDRESS 表示hivemetastore通讯接口。 CONFIGURATION 表示hivemetastore相关配置文件存放路径。 如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH_PATH来查看当前搜索路径上的模式。
  • 操作步骤 安全模式下,请先进行安全认证,参见准备Linux客户端环境。 提交拓扑。以wordcount为例,其它拓扑请参照相关开发指引。进入Storm客户端目录“storm-0.10.0/bin”,执行命令:storm jar /opt/jartarget/storm-examples-1.0.jar com.huawei.storm.example.wordcount.WordCountTopology。 执行storm list命令,查看已经提交的应用程序,如果发现名称为word-count的应用程序,则说明任务提交成功。 如果业务设置为本地模式,且使用命令行方式提交时,请确保提交环境为普通模式环境,当前不支持安全环境下使用命令提交本地模式的业务。
  • 问题 Flink内核升级到1.3.0之后,当kafka调用带有非static的KafkaPartitioner类对象为参数的FlinkKafkaProducer010去构造函数时,运行时会报错。 报错内容如下: org.apache.flink.api.common.InvalidProgramException: The implementation of the FlinkKafkaPartitioner is not serializable. The object probably contains or references non serializable fields.
  • 回答 可通过如下两种方式处理: 在代码的SparkConf初始化之前执行以下两行代码: System.setProperty("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); System.setProperty("spark.kryo.registrator", "com.huawei.bigdata.spark.examples.MyRegistrator"); 在SparkConf对象使用set方法设置,代码如下: val conf = new SparkConf().setAppName("HbaseTest"); conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); conf.set("spark.kryo.registrator", "com.huawei.bigdata.spark.examples.MyRegistrator");
共100000条