华为云用户手册

  • 分区查询 查询指定分区的数据。 以下示例作为一个典型的分区查询,展示在指定的表中对信息进行分区操作,并根据指定分区进行查询的操作。 --创建范围分区表。 gaussdb=# CREATE TABLE test_range1( id INT, info VARCHAR(20) ) PARTITION BY RANGE (id) ( PARTITION p1 VALUES LESS THAN (200), PARTITION p2 VALUES LESS THAN (400), PARTITION p3 VALUES LESS THAN (600), PARTITION p4 VALUES LESS THAN (800), PARTITION pmax VALUES LESS THAN (MAXVALUE) ); --插入1000数据。 gaussdb=# INSERT INTO test_range1 VALUES(GENERATE_SERIES(1,1000),'abcd'); --查询p1分区有多少条数据。 gaussdb=# SELECT COUNT(*) FROM test_range1 PARTITION (p1); count ------- 199 (1 row) --删除。 gaussdb=# DROP TABLE test_range1; 父主题: SELECT
  • ai_watchdog_parameters 表1 ai_watchdog_parameters参数 参数 类型 描述 name text 参数名称,包括如下常用参数: enable_ai_watchdog:是否开启本功能。 ai_watchdog_max_consuming_time_ms:最大耗时。 ai_watchdog_used_memory_kb:本功能当前内存使用。 ai_watchdog_detection_times:已检测次数。 enable_self_healing:发现问题后是否可以自愈。 oom_detected_times:已检测到的OOM次数。 hang_detected_times:已检测到的hang次数。 enable_oom_detection:是否自动启动了OOM探测功能。 in_wait_time:是否处于等待时间。 other_used_memory_has_risk:其他内存使用部分是否存在风险。 shared_used_mem_has_risk:共享内存上下文使用是否存在风险。 dynamic_used_shrctx_has_risk:动态内存使用是存在风险。 value text 参数值。 父主题: AI Watchdog
  • MY_IND_SUBPARTITIONS MY_IND_SUBPARTITIONS描述了当前用户拥有的二级分区表Local索引的索引分区信息(不包含分区表全局索引)。所有用户都可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。分布式暂不支持二级分区,该表字段目前全置NULL。 表1 MY_IND_SUBPARTITIONS字段 名称 类型 描述 index_owner character varying(128) 暂不支持,值为NULL。 index_name character varying(128) 暂不支持,值为NULL。 partition_name character varying(128) 暂不支持,值为NULL。 subpartition_name character varying(128) 暂不支持,值为NULL。 high_value text 暂不支持,值为NULL。 high_value_length numeric 暂不支持,值为NULL。 partition_position numeric 暂不支持,值为NULL。 subpartition_position numeric 暂不支持,值为NULL。 status character varying(8) 暂不支持,值为NULL。 tablespace_name character varying(30) 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 暂不支持,值为NULL。 compression character varying(13) 暂不支持,值为NULL。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 interval character varying(3) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 父主题: 分区表
  • _PG_FOREIGN_SERVERS 显示外部服务器的信息,如表1所示。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_SERVERS字段 名称 类型 描述 oid oid 外部服务器的oid。 srvoptions text[] 外部服务器指定选项,使用“keyword=value”格式的字符串。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在database名称(永远为当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器名称。 foreign_data_wrapper_catalog information_schema.sql_identifier 外部数据封装器所在database名称(永远为当前数据库)。 foreign_data_wrapper_name information_schema.sql_identifier 外部数据封装器名称。 foreign_server_type information_schema.character_data 外部服务器的类型。 foreign_server_version information_schema.character_data 外部服务器的版本。 authorization_identifier information_schema.sql_identifier 外部服务器的所有者的角色名称。 父主题: Information Schema
  • 示例 -- 创建adt1策略。 gaussdb=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; CREATE AUDIT POLICY --删除审计策略adt1。 gaussdb=# DROP AUDIT POLICY adt1; DROP AUDIT POLICY --删除一个不存在的审计策略adt0,提示删除失败,该审计策略不存在。 gaussdb=# DROP AUDIT POLICY adt0; ERROR: adt0 policy does not exist, drop failed
  • 示例 -- 环境准备。 gaussdb=# CREATE DATABASE test_load WITH DBCOMPATIBILITY = 'MYSQL'; gaussdb=# \c test_load gaussdb=# SET b_format_version='5.7'; gaussdb=# SET b_format_dev_version='s2'; -- 准备待导入的文件。 gaussdb=# CREATE TABLE load_data_tmp1(a int, b int); gaussdb=# INSERT INTO load_data_tmp1 VALUES(1,1),(2,2),(3,3); gaussdb=# \copy load_data_tmp1 to '/home/omm/load1.csv'; gaussdb=# CREATE TABLE load_data_tmp2(a int, b int); gaussdb=# INSERT INTO load_data_tmp2 VALUES(1,2); gaussdb=# \copy load_data_tmp2 to '/home/omm/load2.csv'; gaussdb=# CREATE TABLE load_data_tmp3(a int, b int); gaussdb=# INSERT INTO load_data_tmp3 VALUES(4,4),(5,5); gaussdb=# \copy load_data_tmp3 to '/home/omm/load3.csv'; gaussdb=# CREATE TABLE load_data_tmp4(a char(50)); gaussdb=# INSERT INTO load_data_tmp4 VALUES('"load test quote"'), ('\'load test single_quote\''); gaussdb=# \copy load_data_tmp4 to '/home/omm/load4.csv'; -- 创建表。 gaussdb=# CREATE TABLE load_data_tbl1(load_col1 INT UNIQUE, load_col2 INT, load_col3 CHAR(10)); --向表中插入一条数据。 gaussdb=# INSERT INTO load_data_tbl1 VALUES(0,0,'load0'); -- 从文件/home/omm/load1.csv中复制数据到load_data_tbl表,指定列名,设置.load_col3列值统一为"load"。 gaussdb=# LOAD DATA INFILE '/home/omm/load1.csv' INTO TABLE load_data_tbl1(load_col1, load_col2) SET load_col3 = 'load'; --后面导入数据load_col3列值均为'load' gaussdb=# SELECT * FROM load_data_tbl1 ORDER BY load_col1; load_col1 | load_col2 | load_col3 -----------+-----------+----------- 0 | 0 | load0 1 | 1 | load 2 | 2 | load 3 | 3 | load (4 rows) -- 从文件/home/omm/load2.csv中复制数据到load_data_tbl表,指定IGNORE忽略冲突。 gaussdb=# LOAD DATA INFILE '/home/omm/load2.csv' IGNORE INTO TABLE load_data_tbl1; -- 表load_data_tbl1中数据不变,冲突数据跳过。 gaussdb=# SELECT * FROM load_data_tbl1 ORDER BY load_col1; load_col1 | load_col2 | load_col3 -----------+-----------+----------- 0 | 0 | load0 1 | 1 | load 2 | 2 | load 3 | 3 | load (4 rows) -- 创建分区表。 gaussdb=# CREATE TABLE load_data_tbl2 ( load_col_col1 INT, load_col_col2 INT ) PARTITION BY RANGE (load_col_col2) ( PARTITION load_p1 VALUES LESS THAN(3), PARTITION load_p2 VALUES LESS THAN(9), PARTITION load_p3 VALUES LESS THAN(MAXVALUE) ); -- 从文件/home/omm/load3.csv中复制数据到load_data_tbl2表,指定PARTITION。 gaussdb=# LOAD DATA INFILE '/home/omm/load3.csv' INTO TABLE load_data_tbl2 PARTITION (load_p2); --数据导入到load_data_tbl2表中指定分区 gaussdb=# SELECT * FROM load_data_tbl2; load_col_col1 | load_col_col2 ---------------+--------------- 4 | 4 5 | 5 (2 rows) -- 创建表。 gaussdb=# CREATE TABLE load_data_tbl3(load_col_col1 CHAR(30)); -- 从文件/home/omm/load4.csv中复制数据到load_data_tbl3表,指定FIELDS ENCLOSED BY。 gaussdb=# LOAD DATA INFILE '/home/omm/load4.csv' INTO TABLE load_data_tbl3 FIELDS ENCLOSED BY '"'; -- 数据"load test quote"双引号被去掉,'load test single_quote'单引号保留。 gaussdb=# select * from load_data_tbl3; load_col_col1 -------------------------------- load test quote 'load test single_quote' (2 rows) -- 删除表。 gaussdb=# DROP TABLE load_data_tmp1; gaussdb=# DROP TABLE load_data_tmp2; gaussdb=# DROP TABLE load_data_tmp3; gaussdb=# DROP TABLE load_data_tmp4; gaussdb=# DROP TABLE load_data_tbl1; gaussdb=# DROP TABLE load_data_tbl2; gaussdb=# DROP TABLE load_data_tbl3;
  • 语法格式 LOAD DATA [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var [, col_name_or_user_var] ...)] [SET col_name={expr | DEFAULT} [, col_name={expr | DEFAULT}] ...]
  • 参数说明 LOCAL 指定导入文件的位置。 不指定LOCAL时,若file_name为相对路径,则默认导入路径为数据目录。 若指定LOCAL参数则需要指定file_name为绝对路径,当指定为相对路径时默认导入路径为数据库二进制所在路径,即$GAUSSHOME/bin/。 当导入数据与表中数据冲突或文件中字段数小于指定表中字段数时,指定LOCAL与指定IGNORE作用一致。 REPLACE | IGNORE 当导入数据与表中原有数据冲突时,若指定REPLACE,则替换冲突行数据;若指定IGNORE,则跳过冲突行数据,继续导入。若数据冲突但不指定REPLACE、IGNORE或LOCAL中任意一个,则终止导入并报错。 若文件字段数小于指定表列数,指定LOCAL或IGNORE参数会为剩余列赋默认值。不指定IGNORE或LOCAL参数会报错。 PARTITION 当导入表为分区表时,此参数用来指定分区。若数据与指定分区范围不一致,则报错。 CHARACTER SET 指定数据文件的编码格式名称,缺省为当前客户端编码格式。 FIELDS | COLUMNS TERMINATED BY 指定两列之间分隔符,缺省为“\t”。 指定换行符不能与分隔符相同。 [OPTIONALLY] ENCLOSED BY 指定引号字符,缺省为''。 OPTIONALLY参数为可选参数,无实际作用。 引号符仅支持单字符,不支持字符串。 ESCAPED BY 指定转义符,缺省为“\”。 转义字符仅支持单字符,不支持字符串。 LINES STARTING BY 指定导入数据文件起始字段样式。 TERMINATED BY 指定导入数据文件换行符样式。 IGNORE 指定数据导入时,跳过数据文件的前number行。 col_name_or_user_var 可选的待复制字段列表。 取值范围:如果没有声明字段列表,将使用所有字段。 指定列参数不支持重复指定列。 LOAD DATA语法指定列时,col_name_or_user_var仅支持指定为表中存在列,不支持指定为用户变量。 SET 指定列值,可以指定为表达式或DEFAULT。 表达式中不支持列名。 若表达式结果类型与被赋值列对应类型之间不存在隐式转换函数则报错。
  • 注意事项 LOAD DATA语法仅在MYSQL兼容模式(sql_compatibility = 'MYSQL')下支持。 LOAD DATA语法仅在开启b_format_version='5.7'和b_format_dev_version='s2'参数后与MYSQL功能一致。 LOAD DATA语法权限相关GUC参数与COPY FROM语法注意事项一致。 LOAD DATA语法需要拥有表的INSERT和DELETE权限。 执行LOAD DATA语法写入表中的数据若无法转换为表中数据类型格式时,将导致导入失败。 LOAD DATA只能用于表,不能用于视图。
  • ADM_PART_COL_STATIS TICS ADM_PART_COL_STATISTI CS 视图显示数据库中所有表分区的列统计信息和直方图信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_PART_COL_STATISTICS字段 名称 类型 描述 owner character varying(128) 分区表的所有者。 table_name character varying(128) 表名。 partition_name character varying(128) 表分区名称。 column_name character varying(4000) 列名。 num_distinct numeric 暂不支持,值为NULL。 low_value raw 暂不支持,值为NULL。 high_value raw 暂不支持,值为NULL。 density numeric 暂不支持,值为NULL。 num_nulls numeric 暂不支持,值为NULL。 num_buckets numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(63) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 分区表
  • GLOBAL_TRANSACTIONS_RUNNING_XA CTS 显示集群中各个CN和DN节点运行事务的信息,如表1所示。 表1 GLOBAL_TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务(lazy vacuum是一种vacuum机制,在需要时进行vacuum)。 true:表示是。 false:表示否。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id号。 dbid oid 事务对应的数据库id。 父主题: Transaction
  • 变量作用域 变量的作用域表示变量在代码块中的可访问性和可用性。只有在它的作用域内,变量才有效。 变量必须在declare部分声明,即必须建立BEGIN-END块。块结构也强制变量必须先声明后使用,即变量在过程内有不同作用域、不同的生存期。 同一变量可以在不同的作用域内定义多次,内层的定义会覆盖外层的定义。 在外部块定义的变量,可以在嵌套块中使用。但外部块不能访问嵌套块中的变量。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 gaussdb=# DECLARE emp_id INTEGER :=7788; --定义变量并赋值 outer_var INTEGER :=6688; --定义变量并赋值 BEGIN DECLARE emp_id INTEGER :=7799; --定义变量并赋值 inner_var INTEGER :=6688; --定义变量并赋值 BEGIN dbe_output.print_line('inner emp_id ='||emp_id); --显示值为7799 dbe_output.print_line('outer_var ='||outer_var); --引用外部块的变量 END; dbe_output.print_line('outer emp_id ='||emp_id); --显示值为7788 END; /
  • 变量声明 变量声明语法如图1所示。 图1 declare_variable::= 对以上语法格式的解释如下: variable_name,为变量名。 type,为变量类型。 value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。 示例 1 2 3 4 5 6 gaussdb=# DECLARE emp_id INTEGER := 7788; --定义变量并赋值 BEGIN emp_id := 5*7784; --变量赋值 END; /
  • PV_FILE_STAT PV_FILE_STAT视图通过对数据文件I/O的统计,反映数据的I/O性能,用以发现I/O操作异常等性能问题。具体字段信息如表1所示。 表1 PV_FILE_STAT字段 名称 类型 描述 filenum oid 文件标识。 dbid oid 数据库标识。 spcid oid 表空间标识。 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件块的数目。 phyblkwrt bigint 写物理文件块的数目。 readtim bigint 读文件的总时长,单位微秒。 writetim bigint 写文件的总时长,单位微秒。 avgiotim bigint 读写文件的平均时长,单位微秒。 lstiotim bigint 最后一次读文件时长,单位微秒。 miniotim bigint 读写文件的最小时长,单位微秒。 maxiowtm bigint 读写文件的最大时长,单位微秒。 父主题: 其他系统视图
  • SUMMARY_STATIO_USER_INDEXES SUMMARY_STATIO_USER_INDEXES视图显示集群命名空间中所有用户关系表上索引的I/O状态汇总信息,如表1所示。 表1 SUMMARY_STATIO_USER_INDEXES字段 名称 类型 描述 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • MY_ROLE_PRIVS MY_ROLE_PRIVS视图显示授予当前用户角色(包括public角色)的权限的信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_ROLE_PRIVS字段 名称 类型 描述 grantee character varying(128) 被授予权限的用户或角色名称。 granted_role character varying(128) 被授予的角色。 admin_option character varying(3) 该授权是否包含ADMIN选项。 YES:包含ADMIN选项。 NO:不包含ADMIN选项。 delegate_option character varying(3) 暂不支持,值为NULL。 default_role character varying(3) 暂不支持,值为NULL。 os_granted character varying(3) 暂不支持,值为NULL。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • 参数说明 IF EXISTS 如果指定的模式不存在,发出一个notice而不是抛出一个错误。 schema_name 模式的名称。 取值范围:已存在模式名。 CASCADE | RESTRICT CASCADE:自动删除包含在模式中的对象。 RESTRICT:如果模式包含任何对象,则删除失败(缺省行为)。 不要随意删除pg_temp或pg_toast_temp开头的模式,这些模式是系统内部使用的,如果删除,可能导致无法预知的结果。 无法删除当前模式。如果要删除当前模式,须切换到其他模式下。
  • 示例 --创建角色role2。 gaussdb=# CREATE ROLE role2 IDENTIFIED BY '********'; --根据名称创建schema。 gaussdb=# CREATE SCHEMA schema1 AUTHORIZATION role2; CREATE SCHEMA --删除schema。 gaussdb=# DROP SCHEMA schema1 CASCADE; --删除用户。 gaussdb=# DROP USER role2 CASCADE;
  • V$LOCK V$LOCK视图显示各打开事务所持有的锁信息。默认只有系统管理员权限才可以访问此系统视图,普通用户若要访问需要得到授权。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 V$LOCK字段 名称 类型 描述 addr raw 暂不支持,值为NULL。 kaddr raw 暂不支持,值为NULL。 sid numeric 拥有锁的sessionid。 type character varying(2) TM或TX。 TM对应pg_locks中的relation锁。 TX对应其余锁。 id1 numeric TM锁:对象号对应relationId。 TX锁:暂不支持,值为0。 id2 numeric TM锁:默认为0。 TX锁:暂不支持,值为0。 lmode numeric 具体信息如表2所示。 request numeric 具体信息如表2所示。 ctime numeric 暂不支持,值为NULL。 block numeric 是否被其余session阻塞,1表示阻塞,0表示未阻塞。 con_id numeric 暂不支持,值为NULL。 blocksid bigint 当前线程阻塞的另一个线程ID。 表2 锁模式 级别 GaussDB - NULL 0 INVALID 1 AccessShare 2 RowShare 3 RowExclusive 4 ShareUpdateExclusive 5 Share 6 ShareRowExclusive 7 Exclusive 8 AccessExclusive 父主题: 其他系统视图
  • 语法格式 设置事务的隔离级别、读写模式。 1 2 3 4 { SET [ LOCAL | SESSION ] TRANSACTION | SET SESSION CHARACTERISTICS AS TRANSACTION } { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } };
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --开启一个事务。 gaussdb=# START TRANSACTION; --设置事务的隔离级别为READ COMMITTED,访问模式为READ ONLY。 gaussdb=# SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; --查看当前事务的隔离级别。 gaussdb=# SHOW transaction_isolation; transaction_isolation ----------------------- read committed (1 row) --提交事务。 gaussdb=# COMMIT;
  • 参数说明 LOCAL 声明该命令只在当前事务中有效。 SESSION 声明这个命令只对当前会话起作用。 ISOLATION LEVEL 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 在事务中第一个数据修改语句(INSERT、DELETE、UPDATE、FETCH或COPY)执行之后,当前事务的隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 READ UNCOMMITTED:读未提交隔离级别,指定后的行为和READ COMMITTED行为一致。 REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。 会话的默认事务特性的访问模式只能在启动数据库时或者通过发送HUP信号进行设置。
  • DBE_PLDEBUGGER.backtrace debug端调试过程中,调用backtrace,查看当前的调用堆栈,如表1所示。 表1 backtrace返回值列表 名称 类型 描述 frameno OUT integer 调用栈编号。 funcname OUT text 函数名。 lineno OUT integer 行号。 query OUT text 断点内容。 funcoid OUT oid 函数oid。 父主题: DBE_PLDEBUGGER Schema
  • 语法格式 对一个表进行聚簇排序。 1 CLUSTER [ VERBOSE ] table_name [ USING index_name ]; 对一个分区进行聚簇排序。 1 CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ]; 对已做过聚簇的表重新进行聚簇。 1 CLUSTER [ VERBOSE ];
  • 示例 对表进行聚簇排序: 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 --建表并向表中插入数据。 gaussdb=# CREATE TABLE test_c1(id int, name varchar(20)); gaussdb=# CREATE INDEX idx_test_c1_id ON test_c1(id); gaussdb=# INSERT INTO test_c1 VALUES (3,'Joe'),(1,'Jack'),(2,'Scott'); --查看。 gaussdb=# SELECT * FROM test_c1; id | name ----+------- 3 | Joe 1 | Jack 2 | Scott (3 rows) --聚簇排序。 gaussdb=# CLUSTER test_c1 USING idx_test_c1_id; --查看。 gaussdb=# SELECT * FROM test_c1; id | name ----+------- 1 | Jack 2 | Scott 3 | Joe (3 rows) --删除。 gaussdb=# DROP TABLE test_c1; 对已做过聚簇的表重新进行聚簇排序: --建表。 gaussdb=# CREATE TABLE test(col1 int,CONSTRAINT pk_test PRIMARY KEY (col1)); --第一次聚簇排序不带USING关键字报错。 gaussdb=# CLUSTER test; ERROR: there is no previously clustered index for table "test" --聚簇排序。 gaussdb=# CLUSTER test USING pk_test; --插入数据。 gaussdb=# INSERT INTO test VALUES (1),(99),(10),(8); --对已做过聚簇的表重新进行聚簇。 gaussdb=# CLUSTER VERBOSE test; INFO: clustering "public.test" using index scan on "pk_test"(dn_6001 pid=3672) INFO: "test": found 0 removable, 4 nonremovable row versions in 1 pages(dn_6001 pid=3672) DETAIL: 0 dead row versions cannot be removed yet. CPU 0.00s/0.00u sec elapsed 0.01 sec. CLUSTER --删除。 gaussdb=# DROP TABLE test; 对分区进行聚簇排序: --建表并向表中插入数据。 gaussdb=# CREATE TABLE test_c2(id int, info varchar(4)) PARTITION BY RANGE (id)( PARTITION p1 VALUES LESS THAN (11), PARTITION p2 VALUES LESS THAN (21) ); gaussdb=# CREATE INDEX idx_test_c2_id1 ON test_c2(id); gaussdb=# INSERT INTO test_c2 VALUES (6,'ABBB'),(2,'ABAB'),(9,'AAAA'); gaussdb=# INSERT INTO test_c2 VALUES (11,'AAAB'),(19,'BBBA'),(16,'BABA'); --查看。 gaussdb=# SELECT * FROM test_c2; id | info ----+------ 6 | ABBB 2 | ABAB 9 | AAAA 11 | AAAB 19 | BBBA 16 | BABA (6 rows) --对分区p2进行聚簇排序。 gaussdb=# CLUSTER test_c2 PARTITION (p2) USING idx_test_c2_id1; --查看。 gaussdb=# SELECT * FROM test_c2; id | info ----+------ 6 | ABBB 2 | ABAB 9 | AAAA 11 | AAAB 16 | BABA 19 | BBBA (6 rows) --删除。 gaussdb=# DROP TABLE test_c2;
  • 参数说明 VERBOSE 可选。启用显示进度信息。 table_name 表名称。 取值范围:已存在的表名称。 [ USING index_name ] 索引名称。 取值范围:已存在的索引名称。 第一次对表进行聚簇排序时必须指定index_name,后续再次对表进行聚簇排序时不指定index_name,将会按照已有记录对表进行聚簇排序。 partition_name 分区名称。 取值范围:已存在的分区名称。
  • 功能描述 根据一个索引对表进行聚簇排序。 CLUSTER指定GaussDB通过索引名指定的索引聚簇由表名指定的表。表名上必须已经定义该索引。 当对一个表聚簇后,该表将基于索引信息进行物理存储。聚簇是一次性操作:当表被更新之后,更改的内容不会被聚簇。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚簇。 在对一个表聚簇之后,GaussDB会记录该表在哪一个索引上建立了聚簇。CLUSTER table_name将在该表之前记录过的聚簇索引上重新聚簇。用户也可以用ALTER TABLE table_name CLUSTER on index_name来设置指定表用于后续聚簇操作的索引,或使用ALTER TABLE table_name SET WITHOUT CLUSTER来清除指定表之前设置的聚簇索引。 不含参数的CLUSTER命令会将当前用户所拥有的数据库中的先前做过聚簇的所有表重新处理。如果系统管理员调用这个命令,则对所有进行过聚簇的表重新聚簇。 在对一个表进行聚簇的时候,会在其上请求一个AC CES S EXCLUSIVE锁,这样就避免了在CLUSTER操作完成之前对该表执行其它的操作(包括读写)。
  • 注意事项 只有行存B-tree索引支持CLUSTER操作。 如果用户只是随机访问表中的行,那么表中数据的实际存储顺序是无关紧要的。但是,如果对某些特定数据的访问次数较多,而且有一个索引将这些数据分组,那么使用CLUSTER索引对性能会有所提升。 如果一个请求从表中查找的索引是一个范围,或者是一个索引值对应多行,CLUSTER也会有助于应用,因为如果索引标识出了第一匹配行所在的存储页,所有其它行也可能也已经在同一个存储页里了,这样便节省了磁盘访问的时间,加速了查询。 在聚簇过程中,系统会先创建一个按照索引顺序建立的表的临时备份,同时也建立表上的每个索引的临时备份。因此,聚簇过程中需要保证磁盘上有足够的剩余空间,至少是表大小与全部索引大小之和。 因为CLUSTER记录着哪些索引曾被用于聚簇,所以用户可以在第一次手动指定索引,对指定表进行聚簇,然后设置一个周期化执行的维护脚本,只需执行不带参数的CLUSTER命令,就可以实现对想要周期性聚簇的表进行自动更新。 因为优化器记录着有关表的排序的统计,在表上执行聚簇操作后,需运行ANALYZE操作以确保优化器具备最新的排序信息,否则,优化器可能会选择非最优的查询规划。 CLUSTER不允许在事务中执行。 如果没有将GUC参数xc_maintenance_mode设置为on,那么CLUSTER会跳过所有系统表。 对于全局二级索引(GSI),当前在单个分区执行CLUSTER或通过CLUSTER [VERBOSE]对已做过聚簇的表重新进行聚簇后,查询语句走全局二级索引会报错,需要执行REINDEX INDEX重建全局二级索引。
  • GS_MY_ILMDATAMOVEMENTPOLICIES GS_MY_ILMDATAMOVEMENTPOLICIES视图反映ILM策略的数据移动概要信息,包含策略名称、动作类型、条件等。 表1 GS_MY_ILMDATAMOVEMENTPOLICIES字段 名称 类型 描述 policy_name character varying(128) ADO策略名称,系统自动生成,规则为:p+策略ID。 action_type character varying(11) 动作类型,当前版本仅支持压缩。 scope character varying(7) 作用域,当前版本仅支持行。 compression_level character varying(30) 压缩级别,动作类型为压缩时存在。 tier_tablespace character varying(128) 目标空间,动作类型为迁移时存在。当前版本值为null。 tier_status character varying(9) 迁移目标空间是否是只读。当前版本值为null。 condition_type character varying(22) 条件类型,当前版本仅支持最后修改时间。 condition_days numeric 条件天数。 custom_function character varying(128) 自定义函数名称。当前版本值为null。 policy_subtype character varying(10) 策略子类型。当前版本值为null。 action_clause clob 策略执行时可以自动执行的文本。当前版本值为null。 tier_to character varying(10) 迁移动作的目的地类型。当前版本值为null。 node_name name 数据来源节点的名称。 父主题: OLTP表压缩
  • GLOBAL_ADIO_COMPLETER_STATUS GLOBAL_ADIO_COMPLETER_STATUS视图显示集群所有实例中AIO Completer线程的相关统计信息,如表1所示。该视图需在CN上查询,在DN上查询报错。 表1 GLOBAL_ADIO_COMPLETER_STATUS字段 参数 类型 描述 node_name text 实例名称。 tid bigint AIO Completer线程id。 thread_type text AIO Completer线程类型(读/写)。 aio_submitted_num bigint AIO Completer线程已提交的异步I/O请求数量。 aio_completed_num bigint AIO Completer线程已完成的异步I/O请求数量。 aio_incompleted_num bigint AIO Completer线程未完成的异步I/O请求数量。 slot_count_left bigint 空闲slot数量。 父主题: Utility
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全