华为云用户手册

  • SUMMARY_STAT_BAD_BLOCK 获得集群内各节点的表、索引等文件的读取失败信息汇总求和结果(在CN节点使用。对不同DN的统计信息汇总求和,first_time取最早的时间,last_time取最新的时间),如表1所示。 表1 SUMMARY_STAT_BAD_BLOCK字段 名称 类型 描述 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 forknum bigint fork编号。 error_count bigint error的数量。 first_time timestamp with time zone 页面损坏第一次出现的时间。 last_time timestamp with time zone 页面损坏最后出现的时间。 父主题: Object
  • 模式级字符集和字符序 创建模式并指定默认字符集和字符序,创建模式请参见CREATE SCHEMA。 CREATE SCHEMA schema_name [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ]; 修改模式的默认字符集、字符序属性,修改模式请参见ALTER SCHEMA。 ALTER SCHEMA schema_name [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ]; 参数说明: schema_name 模式名称。 取值范围:字符串,要符合标识符命名规范。 default_charset 指定模式的默认字符集,单独指定时会将模式的默认字符序设置为指定的字符集的默认字符序。 default_collation 指定模式的默认字符序,单独指定时会将模式的默认字符集设置为指定的字符序对应的字符集。 GaussDB 通过以下方式选择模式的字符集和字符序: 如果同时指定了default_charset和default_collation,则使用字符集default_charset和字符序default_collation,且default_charset和default_collation需要对应,不对应时会报错。 如果仅指定了default_charset,则使用字符集default_charset及其默认字符序。 如果仅指定了default_collation,则使用default_collation字符序和其对应的字符集。 如果既不指定default_charset也不指定default_collation,则该模式没有默认字符集和默认字符序。 default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。 default_collation仅支持指定为MYSQL模式(即sql_compatibility = 'MYSQL')下的字符序,指定其他字符序报错。 暂不支持新建SCHEMA的字符集、字符序与数据库的server_encoding不同。 示例: 1 2 3 4 5 6 7 8 9 10 11 -- 仅设置字符集,字符序为字符集的默认字符序 gaussdb=# CREATE SCHEMA test CHARSET utf8; -- 仅设置字符序,字符集为字符序关联的字符集 gaussdb=# CREATE SCHEMA test COLLATE utf8_bin; -- 同时设置字符集与字符序,字符集和字符序需对应 gaussdb=# CREATE SCHEMA test CHARSET utf8 COLLATE utf8_bin; -- 将test的默认字符集修改为utf8mb4,默认字符序修改为utf8mb4_bin。 gaussdb=# ALTER SCHEMA test CHARSET utf8mb4 COLLATE utf8mb4_bin; 父主题: 字符集与字符序
  • MY_TAB_STATIS TICS MY_TAB_STATISTI CS 视图显示数据库中有关当前用户拥有的表的统计信息。所有用户均可访问该视图,该视图同时存在于PG_CATA LOG 和SYS Schema下。具体字段信息如表1所示。 表1 MY_TAB_STATISTICS字段 名称 类型 描述 table_name character varying(128) 表名。 partition_name character varying(128) 暂不支持,值为NULL。 partition_position numeric 暂不支持,值为NULL。 subpartition_name character varying(128) 暂不支持,值为NULL。 subpartition_position numeric 暂不支持,值为NULL。 object_type character varying(12) 对象类型: TABLE PARTITION SUBPARTITION num_rows numeric 对象中的行数。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len integer 平均行长,包括行开销。 avg_space_freelist_blocks numeric 暂不支持,值为NULL。 num_freelist_blocks numeric 暂不支持,值为NULL。 avg_cached_blocks numeric 暂不支持,值为NULL。 avg_cache_hit_ratio numeric 暂不支持,值为NULL。 im_imcu_count numeric 暂不支持,值为NULL。 im_block_count numeric 暂不支持,值为NULL。 im_stat_update_time timestamp(6) without time zone 暂不支持,值为NULL。 scan_rate numeric 暂不支持,值为NULL。 sample_size numeric 分析表格时使用的样本量。 last_analyzed timestamp with time zone 最近分析表的日期。数据库重启后,数据会丢失。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 stattype_locked character varying(5) 暂不支持,值为NULL。 stale_stats character varying(7) 暂不支持,值为NULL。 notes character varying(25) 暂不支持,值为NULL。 scope character varying(7) 暂不支持,默认值SHARED。 父主题: 其他系统视图
  • ADM_SEQUEN CES ADM_SEQUENCES视图显示数据库中所有序列的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_SEQUENCES字段 名称 类型 描述 sequence_owner character varying(64) 序列的所有者。 sequence_name character varying(64) 序列名称。 min_value int16 序列的最小值。 max_value int16 序列的最大值。 increment_by int16 序列的递增值。 last_number int16 该序列从GTM中一次性批量申请的最后一个值。 cache_size int16 序列磁盘缓存大小。 cycle_flag character(1) 序列是否是循环序列,取值为Y或N: Y:是循环序列。 N:不是循环序列。 父主题: 其他系统视图
  • PG_NAMESPACE PG_NAMESPACE系统表存储名称空间,即存储schema相关的信息。如果开启数据库对象隔离属性,用户只能查看自己有权限访问的schema信息。 表1 PG_NAMESPACE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 nspname name 名称空间的名称。 nspowner oid 名称空间的所有者。 nsptimeline bigint 在DN上创建此命名空间时的时间线。此字段为内部使用,仅在DN上有效。 nspacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 in_redistribution "char" 是否处于重发布状态。 nspblockchain boolean 该模式是否为防篡改模式。 true:该模式为防篡改模式。 false:该模式为非防篡改模式。 nspcollation oid 名称空间的默认字符序(仅在sql_compatibility='MYSQL'时可能有值)。 父主题: 其他系统表
  • GS_WLM_REBUILD_USER_RESOURCE_POOL 该视图用于在当前连接节点上重建内存中用户的资源池信息。只在资源池信息缺失或错乱时作为补救措施。查询该视图需要sysadmin权限。 表1 GS_WLM_REBUILD_USER_RESOURCE_POOL字段 名称 类型 描述 gs_wlm_rebuild_user_resource_pool boolean 重建内存中用户资源池信息结果。t为成功,f为失败。 父主题: 负载管理
  • 案例环境准备 为了便于案例演示,需准备建表语句如下: --清理环境 DROP SCHEMA IF EXISTS dn_gather_test CASCADE; CREATE SCHEMA dn_gather_test; SET current_schema=dn_gather_test; --创建测试表 CREATE TABLE t1(a INT, b INT, c INT, d INT); CREATE TABLE t2(a INT, b INT, c INT, d INT); CREATE TABLE t3(a INT, b INT, c INT, d INT); CREATE TABLE t4(a INT, b INT, c INT, d INT);
  • 示例 --创建表空间。 gaussdb=# CREATE TABLESPACE tbs_data1 RELATIVE LOCATION 'tablespace1/tbs_data1'; --创建一个普通表。 gaussdb=# CREATE TABLE my_table (c1 int, c2 int); --创建全量物化视图。 gaussdb=# CREATE MATERIALIZED VIEW my_mv TABLESPACE tbs_data1 AS SELECT * FROM my_table; --基表写入数据。 gaussdb=# INSERT INTO my_table VALUES(1,1),(2,2); --查询全量物化视图。 gaussdb=# SELECT * FROM my_mv; c1 | c2 ----+---- (0 rows) --对全量物化视图my_mv进行全量刷新。 gaussdb=# REFRESH MATERIALIZED VIEW my_mv; --查询全量物化视图。 gaussdb=# SELECT * FROM my_mv; c1 | c2 ----+---- 1 | 1 2 | 2 (2 rows) --删除全量物化视图。 gaussdb=# DROP MATERIALIZED VIEW my_mv; --删除普通表my_table。 gaussdb=# DROP TABLE my_table; --删除表空间。 gaussdb=# DROP TABLESPACE tbs_data1;
  • 参数说明 mv_name 要创建的物化视图的名称(可以被模式限定)。 取值范围:字符串,要符合标识符命名规范。 column_name 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列在数量上保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 取值范围:字符串,要符合标识符命名规范。 WITH ( storage_parameter [= value] [, ... ] ) 该子句为表或索引指定一个可选的存储参数。详见CREATE TABLE。 TABLESPACE tablespace_name 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 AS query 一个SELECT、TABLE或者VALUES命令。这个查询将在一个安全受限的操作中运行。
  • GLOBAL_REPLICATION_SLOTS GLOBAL_REPLICATION_SLOTS视图用于查看集群各节点的复制槽的信息,如表1所示。 表1 GLOBAL_REPLICATION_SLOTS字段 名称 类型 描述 node_name name 节点名称。 slot_name text 复制槽的名称。 plugin text 逻辑复制槽对应的输出插件名称。 slot_type text 复制槽的类型。 physical:物理复制槽。 logical:逻辑复制槽。 datoid oid 复制槽所在的数据库OID。 database name 复制槽所在的数据库名称。 active boolean 复制槽是否为激活状态。 t(true):表示是。 f(false):表示不是。 x_min xid 数据库需要为复制槽保留的最早事务的事务号。 catalog_xmin xid 数据库需要为逻辑复制槽保留的最早的涉及系统表的事务的事务号。 restart_lsn text 复制槽需要的最早xlog的物理位置。 dummy_standby boolean 预留参数。 复制槽的连接对端是否为从备。 t(true):表示是。 f(false):表示不是。 父主题: Utility
  • STAT_DATABASE_CONFLI CTS 显示数据库当前节点冲突状态的统计信息,如表1所示。 表1 STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datid oid 数据库标识。 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • PG_VARIABLE_INFO PG_VARIABLE_INFO视图用于查询集群中当前节点的xid、oid的状态。具体字段信息如表1所示。 表1 PG_VARIABLE_INFO字段 名称 类型 描述 node_name text 节点名称。 next_oid oid 该节点下一次生成的oid。 next_xid xid 该节点下一次生成的事务号。 oldest_xid xid 该节点最旧的事务号。 xid_vac_limit xid 强制autovacuum的临界点。 oldest_xid_db oid 该节点datafrozenxid最小的数据库oid。 last_extend_csn_logpage xid 最后一次扩展csnlog的页面号。 start_extend_csn_logpage xid csnlog扩展的起始页面号。 next_commit_seqno xid 该节点下次生成的csn号。 latest_completed_xid xid 该节点提交或者回滚后节点上的最新事务号。 startup_max_xid xid 该节点关机前的最后一个事务号。 父主题: 其他系统视图
  • 限制场景 在存储过程使用commit/rollback有以下限制场景: 不允许Trigger的存储过程包含COMMIT/ROLLBACK语句、或调用带有COMMIT/ROLLBACK语句的存储过程。 gaussdb=# DROP TABLE IF EXISTS EXAMPLE1; gaussdb=# CREATE TABLE EXAMPLE1(COL1 INT); gaussdb=# INSERT INTO EXAMPLE1(col1) VALUES (1); gaussdb=# CREATE OR REPLACE FUNCTION FUNCTION_TRI_EXAMPLE2() RETURN TRIGGER AS EXP INT; BEGIN FOR i IN 0..20 LOOP INSERT INTO EXAMPLE1(col1) VALUES (i); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; SELECT COUNT(*) FROM EXAMPLE1 INTO EXP; END; / gaussdb=# CREATE TRIGGER TRIGGER_EXAMPLE AFTER DELETE ON EXAMPLE1 FOR EACH ROW EXECUTE PROCEDURE FUNCTION_TRI_EXAMPLE2(); CREATE TRIGGER gaussdb=# DELETE FROM EXAMPLE1; ERROR: Can not commit/rollback if it's atomic is true: can not use commit rollback in Complex SQL CONTEXT: PL/pgSQL function function_tri_example2() line 7 at COMMIT 不支持带有IMMUTABLE以及SHIPPABLE的存储过程调用commit/rollback,或调用带有commit/rollback语句的存储过程。 gaussdb=# DROP TABLE IF EXISTS EXAMPLE1; gaussdb=# CREATE TABLE EXAMPLE1(COL1 INT); gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE1() IMMUTABLE AS EXP INT; BEGIN FOR i IN 0..20 LOOP SELECT COUNT(*) FROM EXAMPLE1 INTO EXP; IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END; / gaussdb=# CALL TRANSACTION_EXAMPLE1(); ERROR: Can not commit/rollback if it's atomic is true: commit/rollback/savepoint is not allowed in a non-volatile function CONTEXT: PL/pgSQL function transaction_example1() line 7 at COMMIT 不支持存储过程中任何变量的提交,包括存储过程内声明的变量或者传入的参数。 gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE2(EXP_OUT OUT INT) AS EXP INT; BEGIN EXP_OUT := 0; COMMIT; DBE_OUTPUT.PRINT_LINE('EXP IS:'||EXP); EXP_OUT := 1; ROLLBACK; DBE_OUTPUT.PRINT_LINE('EXP IS:'||EXP); END; / gaussdb=# CALL TRANSACTION_EXAMPLE2(100); EXP IS: EXP IS: exp_out --------- 1 (1 row) 不支持出现在SQL中的调用(除了Select Procedure)。 gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE3() AS BEGIN FOR i IN 0..20 LOOP INSERT INTO EXAMPLE1 (col1) VALUES (i); IF i % 2 = 0 THEN EXECUTE IMMEDIATE 'COMMIT'; ELSE EXECUTE IMMEDIATE 'ROLLBACK'; END IF; END LOOP; END; / gaussdb=# CALL TRANSACTION_EXAMPLE3(); ERROR: cannot call transaction statements in EXECUTE IMMEDIATE statement. CONTEXT: PL/pgSQL function transaction_example3() line 6 at EXECUTE statement 存储过程头带有GUC参数设置的不允许调用commit/rollback语句。 gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE4() SET ARRAY_NULLS TO "ON" AS BEGIN FOR i IN 0..20 LOOP INSERT INTO EXAMPLE1 (col1) VALUES (i); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END; / gaussdb=# CALL TRANSACTION_EXAMPLE4(); ERROR: Can not commit/rollback if it's atomic is true: transaction statement in store procedure with GUC setting in option clause is not supported CONTEXT: PL/pgSQL function transaction_example4() line 6 at COMMIT 游标open的对象不允许为带有commit/rollback语句的存储过程。 gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE5(INTIN IN INT, INTOUT OUT INT) AS BEGIN INTOUT := INTIN + 1; COMMIT; END; / gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE6() AS CURSOR CURSOR1(EXPIN INT) IS SELECT TRANSACTION_EXAMPLE5(EXPIN); INTEXP INT; BEGIN FOR i IN 0..20 LOOP OPEN CURSOR1(i); FETCH CURSOR1 INTO INTEXP; INSERT INTO EXAMPLE1(COL1) VALUES (INTEXP); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; CLOSE CURSOR1; END LOOP; END; / gaussdb=# CALL TRANSACTION_EXAMPLE6(); ERROR: Can not commit/rollback if it's atomic is true: transaction statement in store procedure used as cursor is not supported CONTEXT: PL/pgSQL function transaction_example5(integer) line 4 at COMMIT referenced column: transaction_example5 PL/pgSQL function transaction_example6() line 8 at FETCH 不支持CURSOR/EXECUTE语句,以及各类表达式内调用COMMIT/ROLLBACK。 gaussdb=# CREATE OR REPLACE PROCEDURE exec_func1() AS BEGIN CREATE TABLE TEST_exec(A INT); COMMIT; END; / gaussdb=# CREATE OR REPLACE PROCEDURE exec_func2() AS BEGIN EXECUTE exec_func1(); COMMIT; END; / gaussdb=# CALL exec_func2(); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CONTEXT: SQL statement "CREATE TABLE TEST_exec(A INT)" PL/pgSQL function exec_func1() line 3 at SQL statement PL/pgSQL function exec_func2() line 3 at EXECUTE statement ERROR: Can not commit/rollback if it's atomic is true: transaction statement in store procedure used as a expression is not supported CONTEXT: PL/pgSQL function exec_func1() line 4 at COMMIT PL/pgSQL function exec_func2() line 3 at EXECUTE statement 不支持存储过程返回值与表达式计算。 gaussdb=# CREATE OR REPLACE PROCEDURE exec_func3(RET_NUM OUT INT) AS BEGIN RET_NUM := 1+1; COMMIT; END; / gaussdb=# CREATE OR REPLACE PROCEDURE exec_func4(ADD_NUM IN INT) AS SUM_NUM INT; BEGIN SUM_NUM := ADD_NUM + exec_func3(); COMMIT; END; / gaussdb=# CALL exec_func4(1); ERROR: Can not commit/rollback if it's atomic is true: transaction statement in store procedure used as a expression is not supported CONTEXT: PL/pgSQL function exec_func3() line 4 at COMMIT PL/pgSQL function exec_func4(integer) line 4 at assignment 不支持存储过程中释放存储过程外部定义的保存点。 gaussdb=# CREATE OR REPLACE PROCEDURE STP_SAVEPOINT_EXAMPLE3() AS BEGIN INSERT INTO EXAMPLE1 VALUES(2); RELEASE SAVEPOINT s1; -- 释放存储过程外部定义的保存点 INSERT INTO EXAMPLE1 VALUES(3); END; / gaussdb=# BEGIN; INSERT INTO EXAMPLE1 VALUES(1); SAVEPOINT s1; CALL STP_SAVEPOINT_EXAMPLE3(); COMMIT; ERROR: cannot release outer savepoint CONTEXT: PL/pgSQL function stp_savepoint_example3() line 4 at RELEASE SAVEPOINT
  • 示例 支持在PL/SQL的存储过程内使用COMMIT/ROLLBACK,后续示例依赖此用例。 gaussdb=# DROP TABLE IF EXISTS EXAMPLE1; gaussdb=# CREATE TABLE EXAMPLE1(COL1 INT); gaussdb=# CREATE OR REPLACE PROCEDURE TRANSACTION_EXAMPLE() AS BEGIN FOR i IN 0..20 LOOP INSERT INTO EXAMPLE1(COL1) VALUES (i); IF i % 2 = 0 THEN COMMIT; ELSE ROLLBACK; END IF; END LOOP; END; / gaussdb=# call TRANSACTION_EXAMPLE(); transaction_example --------------------- (1 row) 支持含有EXCEPTION的存储过程使用COMMIT/ROLLBACK。 支持在存储过程的EXCEPTION语句内使用COMMIT/ROLLBACK。 支持DDL在COMMIT/ROLLBACK后的提交/回滚。 gaussdb=# DROP TABLE IF EXISTS EXAMPLE1; gaussdb=# CREATE TABLE EXAMPLE1(COL1 INT); gaussdb=# CREATE OR REPLACE PROCEDURE TEST_COMMIT_INSERT_EXCEPTION_ROLLBACK() AS BEGIN DROP TABLE IF EXISTS TEST_COMMIT; CREATE TABLE TEST_COMMIT(A INT, B INT); INSERT INTO TEST_COMMIT SELECT 1, 1; COMMIT; CREATE TABLE TEST_ROLLBACK(A INT, B INT); RAISE EXCEPTION 'RAISE EXCEPTION AFTER COMMIT'; EXCEPTION WHEN OTHERS THEN INSERT INTO TEST_COMMIT SELECT 2, 2; ROLLBACK; END; / gaussdb=# call TEST_COMMIT_INSERT_EXCEPTION_ROLLBACK(); NOTICE: table "test_commit" does not exist, skipping CONTEXT: SQL statement "DROP TABLE IF EXISTS TEST_COMMIT" PL/pgSQL function test_commit_insert_exception_rollback() line 3 at SQL statement NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CONTEXT: SQL statement "CREATE TABLE TEST_COMMIT(A INT, B INT)" PL/pgSQL function test_commit_insert_exception_rollback() line 4 at SQL statement NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CONTEXT: SQL statement "CREATE TABLE TEST_ROLLBACK(A INT, B INT)" PL/pgSQL function test_commit_insert_exception_rollback() line 7 at SQL statement test_commit_insert_exception_rollback --------------------------------------- (1 row) 支持在事务块里调用含有COMMIT/ROLLBACK的存储过程,即通过BEGIN/START/END等开启控制的外部事务。 gaussdb=# BEGIN; -- TEST_COMMIT_INSERT_EXCEPTION_ROLLBACK定义见示例2 CALL TEST_COMMIT_INSERT_EXCEPTION_ROLLBACK(); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CONTEXT: SQL statement "CREATE TABLE TEST_COMMIT(A INT, B INT)" PL/pgSQL function test_commit_insert_exception_rollback() line 4 at SQL statement NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CONTEXT: SQL statement "CREATE TABLE TEST_ROLLBACK(A INT, B INT)" PL/pgSQL function test_commit_insert_exception_rollback() line 7 at SQL statement test_commit_insert_exception_rollback --------------------------------------- (1 row) gaussdb=# END; COMMIT 支持多数PL/SQL的上下文和语句内调用COMMIT/ROLLBACK,包括常用的IF/FOR/CURSOR LOOP/WHILE。 gaussdb=# CREATE OR REPLACE PROCEDURE TEST_COMMIT2() IS BEGIN DROP TABLE IF EXISTS TEST_COMMIT; CREATE TABLE TEST_COMMIT(A INT); FOR I IN REVERSE 3..0 LOOP INSERT INTO TEST_COMMIT SELECT I; COMMIT; END LOOP; FOR I IN REVERSE 2..4 LOOP UPDATE TEST_COMMIT SET A=I; COMMIT; END LOOP; EXCEPTION WHEN OTHERS THEN INSERT INTO TEST_COMMIT SELECT 4; COMMIT; END; / gaussdb=# call TEST_COMMIT2(); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CONTEXT: SQL statement "CREATE TABLE TEST_COMMIT(A INT)" PL/pgSQL function test_commit2() line 4 at SQL statement test_commit2 -------------- (1 row) 支持存储过程内GUC参数的回滚提交。 gaussdb=# SHOW explain_perf_mode; explain_perf_mode ------------------- normal (1 row) gaussdb=# SHOW enable_force_vector_engine; enable_force_vector_engine ---------------------------- off (1 row) gaussdb=# CREATE OR REPLACE PROCEDURE GUC_ROLLBACK() AS BEGIN SET enable_force_vector_engine = on; COMMIT; SET explain_perf_mode TO pretty; ROLLBACK; END; / gaussdb=# call GUC_ROLLBACK(); guc_rollback -------------- (1 row) gaussdb=# SHOW explain_perf_mode; explain_perf_mode ------------------- normal (1 row) gaussdb=# SHOW enable_force_vector_engine; enable_force_vector_engine ---------------------------- on (1 row) gaussdb=# SET enable_force_vector_engine = off;
  • PG_SHDESCRIPTION PG_SHDESCRIPTION系统表为共享数据库对象存储可选的注释。可以使用COMMENT命令操作注释的内容,使用\d命令查看注释内容。 PG_DESCRIPTION提供了类似的功能,它记录了单个数据库中对象的注释。 PG_SHDESCRIPTION是在集群的所有数据库之间共享的,即每个集群只有一个,而不是每个数据库一个。 表1 PG_SHDESCRIPTION字段 名称 类型 引用 描述 objoid oid 任意OID属性 所描述的对象的OID。 classoid oid PG_CLASS.oid 该对象出现的系统表的OID。 description text - 该对象的描述信息。 父主题: 其他系统表
  • 存储层数据倾斜 GaussDB数据库 中,数据分布存储在各个DN上,通过分布式执行提高查询的效率。但是,如果数据分布存在倾斜,则会导致分布式执行某些DN成为瓶颈,影响查询性能。这种情况通常是由于分布列选择不合理,可以通过调整分布列的方式解决。 示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 gaussdb=# explain performance select count(*) from inventory; 5 --Seq Scan on lmz.inventory dn_6001_6002 (actual time=0.444..83.127 rows=42000000 loops=1) dn_6003_6004 (actual time=0.512..63.554 rows=27000000 loops=1) dn_6005_6006 (actual time=0.722..99.033 rows=45000000 loops=1) dn_6007_6008 (actual time=0.529..100.379 rows=51000000 loops=1) dn_6009_6010 (actual time=0.382..71.341 rows=36000000 loops=1) dn_6011_6012 (actual time=0.547..100.274 rows=51000000 loops=1) dn_6013_6014 (actual time=0.596..118.289 rows=60000000 loops=1) dn_6015_6016 (actual time=1.057..132.346 rows=63000000 loops=1) dn_6017_6018 (actual time=0.940..110.310 rows=54000000 loops=1) dn_6019_6020 (actual time=0.231..41.198 rows=21000000 loops=1) dn_6021_6022 (actual time=0.927..114.538 rows=54000000 loops=1) dn_6023_6024 (actual time=0.637..118.385 rows=60000000 loops=1) dn_6025_6026 (actual time=0.288..32.240 rows=15000000 loops=1) dn_6027_6028 (actual time=0.566..118.096 rows=60000000 loops=1) dn_6029_6030 (actual time=0.423..82.913 rows=42000000 loops=1) dn_6031_6032 (actual time=0.395..78.103 rows=39000000 loops=1) dn_6033_6034 (actual time=0.376..51.052 rows=24000000 loops=1) dn_6035_6036 (actual time=0.569..79.463 rows=39000000 loops=1) 在performance信息中,可以看到inventory表各DN的scan行数,发现各DN的行数差距较大,最大的为63000000,最小的只有15000000,差了4倍。这个差距对于数据扫描的性能影响可以接受,但如果上层有join算子,则影响较大。 通常,数据表在各DN上是hash分布的,因此分布列的选择很重要。通过table_skewness()来查看上述inventory表在各DN的数据分布倾斜,查询结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 gaussdb=# select table_skewness('inventory'); table_skewness ------------------------------------------ ("dn_6015_6016 ",63000000,8.046%) ("dn_6013_6014 ",60000000,7.663%) ("dn_6023_6024 ",60000000,7.663%) ("dn_6027_6028 ",60000000,7.663%) ("dn_6017_6018 ",54000000,6.897%) ("dn_6021_6022 ",54000000,6.897%) ("dn_6007_6008 ",51000000,6.513%) ("dn_6011_6012 ",51000000,6.513%) ("dn_6005_6006 ",45000000,5.747%) ("dn_6001_6002 ",42000000,5.364%) ("dn_6029_6030 ",42000000,5.364%) ("dn_6031_6032 ",39000000,4.981%) ("dn_6035_6036 ",39000000,4.981%) ("dn_6009_6010 ",36000000,4.598%) ("dn_6003_6004 ",27000000,3.448%) ("dn_6033_6034 ",24000000,3.065%) ("dn_6019_6020 ",21000000,2.682%) ("dn_6025_6026 ",15000000,1.916%) (18 rows) 通过查询建表定义,可以发现,目前该表是以inv_date_sk作为分布列的,导致存在倾斜。通过查看各列的数据分布情况,建表时改为inv_item_sk作为分布列,则倾斜情况分布如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 gaussdb=# select table_skewness('inventory'); table_skewness ------------------------------------------ ("dn_6001_6002 ",43934200,5.611%) ("dn_6007_6008 ",43829420,5.598%) ("dn_6003_6004 ",43781960,5.592%) ("dn_6031_6032 ",43773880,5.591%) ("dn_6033_6034 ",43763280,5.589%) ("dn_6011_6012 ",43683600,5.579%) ("dn_6013_6014 ",43551660,5.562%) ("dn_6027_6028 ",43546340,5.561%) ("dn_6009_6010 ",43508700,5.557%) ("dn_6023_6024 ",43484540,5.554%) ("dn_6019_6020 ",43466800,5.551%) ("dn_6021_6022 ",43458500,5.550%) ("dn_6017_6018 ",43448040,5.549%) ("dn_6015_6016 ",43247700,5.523%) ("dn_6005_6006 ",43200240,5.517%) ("dn_6029_6030 ",43181360,5.515%) ("dn_6025_6026 ",43179700,5.515%) ("dn_6035_6036 ",42960080,5.487%) (18 rows) 数据分布倾斜的问题得到解决。 除了table_skewness()视图外,当前版本还提供了table_distribution函数和PGXC_GET_TABLE_SKEWNESS视图,可以更加高效地查询各表的数据倾斜情况。
  • ssl_cert_expire_alert_threshold 参数说明:ssl证书过期告警时间。证书过期时间少于该时间时,上报证书即将过期告警。 参数类型:整型 参数单位:(d)天 取值范围:7 ~ 180 默认值:90 设置方式:该参数为CM参数,参数修改请参考表2中方式一进行设置,修改后需要重启cm_server才能生效。 设置建议:按照实际需要进行调整。 设置不当的风险与影响:设置过小可能会导致告警不及时。
  • ddb_log_level 参数说明:设置ddb日志级别。 参数类型:字符串 参数单位:无 取值范围: “NONE”:表示关闭日志打印,不能与以下日志级别混合使用。 “RUN_ERR|RUN_WAR|RUN_INF|DEBUG_ERR|DEBUG_WAR|DEBUG_INF|TRACE|PROFILE|OPER”:表示开启日志,日志级别可以从上述字符串中选取字符串并使用竖线组合使用,不能配置空字符串。 默认值:"RUN_ERR|RUN_WAR|DEBUG_ERR|OPER|RUN_INF|PROFILE" 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • enable_synclist_single_inst 参数说明:控制是否开启降副本降至一主零备功能。开启后降副本会降至一主零备,参数设置错误时,按默认值处理。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启降副本降至一主零备功能。 off:表示关闭降副本降至一主零备功能。 默认值:off 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:推荐使用默认值。如果需要调整请联系华为技术支持。 设置不当的风险与影响:打开此参数时,在所有备机故障情况下,主机会自动转为本地提交方式,此时如果主机再故障,则可能产生不可恢复的影响。
  • ssl_cert_expire_check_interval 参数说明:ssl证书过期检测周期。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 2147483647 默认值:86400(即1天) 设置方式:该参数为CM参数,参数修改请参考表2中方式一进行设置,修改后需要重启cm_server才能生效。 设置建议:按照实际需要进行调整。 设置不当的风险与影响:设置过小会增加CPU负载,过大会导致告警不及时。
  • thread_effective_time 参数说明:线程运行一轮的有效超时时间。超时说明此线程卡住,进程将自动退出。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 1200,0表示关闭线程监控能力。 默认值:20 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:不建议调整参数值大小,如果需要调整请联系华为技术支持。 设置不当的风险与影响:设置不当可能导致故障检测不准确、故障恢复不及时。
  • enable_ssl 参数说明:ssl证书开关。 参数类型:布尔型 参数单位:无 取值范围: on:表示启用ssl证书加密通信。 off:表示不启用ssl证书加密通信。 默认值:off 设置方式:该参数为CM参数,参数修改请参考表2中方式一进行设置,修改后需要重启cm_server才能生效。 设置建议:出于安全性考虑,建议不要关闭该配置。关闭后cm将不使用加密通信,所有信息明文传播,可能带来窃听、篡改、冒充等安全风险。 设置不当的风险与影响:关闭后cm将不使用加密通信,所有信息明文传播,可能带来窃听、篡改、冒充等安全风险。
  • force_promote 参数说明:控制cm_server是否开启强切逻辑功能(集群状态为Unknown的时候以丢失部分数据为代价保证集群基本功能可用)。该参数同时适用于cn和dn。 参数类型:整型 参数单位:无 取值范围:0 ~ 1 0:表示关闭强切逻辑功能。 1:表示开启强切逻辑功能。 默认值:0 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:如果用户可以接受业务(系统)发生强切导致部分数据丢失,以恢复业务为最高优先级,则可以设置为开启。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • switch_rto 参数说明:cm_server强切逻辑等待时延。在force_promote参数取值被置为1时,当集群的某一分片处于无主状态开始计时,等待该延迟时间后开始执行强切逻辑。 参数类型:整型 参数单位:s(秒) 取值范围:60 ~ 2147483647 默认值:600 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小会导致数据库故障假阳性,过大会导致故障恢复不及时。
  • cm_server_arbitrate_delay_incrememtal_time_out 参数说明:cm_server仲裁延迟增量时长。cm_server主机断连后,仲裁启动计时开始,经过仲裁延迟时长后,将选出新的cm_server主机。其中仲裁延迟时长由仲裁延迟基础时长、节点index(server ID序号)和增量时长共同决定。公式为:仲裁延迟时长=仲裁延迟基础时长+节点index*仲裁延迟增量时长。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 2147483647 默认值:3 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小会导致cm_server断连故障假阳性,过大会导致CM故障恢复不及时。
  • cm_krb_server_keyfile 参数说明:kerberos服务端key文件所在位置,需要配置为绝对路径。该文件通常在“${GAUSSHOME}/kerberos路径”下,以keytab格式结尾,文件名与集群运行所在用户名相同。 参数类型:字符串 参数单位:无 取值范围:服务器上kerberos服务端key文件所在位置的绝对路径。 默认值:“${GAUSSHOME}/kerberos/{UserName}.keytab”,默认值无法生效,仅作为提示。 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:该参数与上述cm_auth_method参数是配对的,当cm_auth_method参数修改为“gss”时,该参数也必须配置为正确路径,否则将影响集群状态。
  • enable_finishredo_retrieve 参数说明:控制cm_server强切逻辑后是否对redo切除的xlog进行数据找回。该参数取值设置为on时,发生强切后进行数据自动找回。 参数类型:布尔型 参数单位:无 取值范围: on:表示进行数据找回。 off:表示不进行数据找回。 默认值:off 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:按照实际需要进行调整。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • backup_open 参数说明:灾备集群设置,控制CM是否按照灾备集群模式运行。 参数类型:整型 参数单位:无 取值范围:0 ~ 3 0:表示未搭建灾备关系。 1:表示搭建了dorado灾备关系。 2:表示搭建了流式灾备关系。 3:表示搭建了逻辑灾备关系。 默认值:0 设置方式:该参数为CM参数,参数修改请参考表2中方式一进行设置,修改后需要重启cm_server才能生效。 设置建议:非灾备集群不能开启该参数。此参数为内部调用参数,不建议用户修改。 设置不当的风险与影响:修改该参数取值可能导致集群出现意料之外的结果,请保持默认值。
  • install_type 参数说明:容灾集群相关的设置,用来区分集群的类型。 参数类型:整型 参数单位:无 取值范围:0 ~ 2 0:表示未搭建容灾关系的集群。 1:表示基于dorado的集群。 2:表示基于流式的集群。 默认值:0 设置方式:该参数为CM参数,参数修改请参考表2中方式一进行设置,修改后需要重启cm_server才能生效。 设置建议:非灾备集群不能开启该参数。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • cm_server_arbitrate_delay_base_time_out 参数说明:cm_server仲裁延迟基础时长。cm_server主机断连后,仲裁启动计时开始,经过仲裁延迟时长后,将选出新的cm_server主机。其中仲裁延迟时长由仲裁延迟基础时长、节点index(server ID序号)和增量时长共同决定。公式为:仲裁延迟时长=仲裁延迟基础时长+节点index*仲裁延迟增量时长。 参数类型:整型 参数单位:s(秒) 取值范围:0 ~ 2147483647 默认值:10 设置方式:该参数为CM参数,参数修改请参考表2中方式一、方式二进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小会导致cm_server断连故障假阳性,过大会导致CM故障恢复不及时。
共100000条
提示

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