华为云用户手册

  • recovery_redo_workers 参数说明:是极致RTO特性中每个ParseRedoRecord线程对应的PageRedoWorker数量。recovery_redo_workers需要配合recovery_parse_workers使用,recovery_parse_workers或者recovery_redo_workers大于1,则开启极致RTO。如不期望开启极致RTO,请保持recovery_redo_workers为默认值1。 参数类型:整型 参数单位:无 取值范围:1~8 默认值:1 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:不同CPU、内存和部署模式下,recovery_parse_workers和recovery_redo_workers的设置值可参考表1 不同CPU、内存和部署模式下的参数设置参考。 设置不当的风险与影响:设置过大,会导致CPU、内存资源不足,造成回放速度降低。
  • recovery_max_workers 参数说明:设置并行回放线程的最大数量。recovery_parse_workers和recovery_redo_workers同时为1,即不开启极致RTO,此参数才能生效。 参数类型:整型 参数单位:无 取值范围:0~20 默认值:4 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过大,会导致CPU、内存资源不足,造成回放速度降低。
  • recovery_time_target 参数说明:备机完成日志写入和回放的流控阈值。当备机的回放完成预期时间大于此参数,主机会触发日志流控,将降低主机向备机发送日志的速率。 参数类型:整型 参数单位:s(秒) 取值范围:0~3600 0表示不开启日志流控。 1~3600是指备机能够在recovery_time_target时间内完成日志的写入和回放,可以保证主机与备机切换时能够在recovery_time_target完成日志写入和回放,保证备机能够快速升主机。 默认值:60 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:一般设置为默认值,不作调整。 设置不当的风险与影响:设置过小会影响主机的性能,例如设置为10,说明备机回放相对备机接收日志有延迟,允许延迟最大为10s,如果超过了10s,则会限制主机往备机段发送日志,对主机的性能会有限制,在主备场景下,主机的事务需要有备机日志落盘才能提交,限制了日志的发送会限制主机的事务执行影响到性能。设置过大会失去流控效果。关闭流控后,可能会出现RTO/RPO升高的情况。
  • recovery_parallelism 参数说明:查询并行回放线程的实际数量。 参数类型:整型 参数单位:无 取值范围:1~165 默认值:4 设置方式:该参数属于POSTMASTER类型参数,但是不能直接修改。recovery_max_workers、recovery_parse_workers、recovery_redo_workers这3个参数的任意一个被修改时,recover_parallelism都将被重新计算。 设置建议:该参数为只读参数,无法修改。 设置不当的风险与影响:无
  • GS_SPM_SQL_BASELINE GS_SPM_SQL_BASELINE是SPM计划管理特性下的一个系统视图,当前该特性在分布式下不支持。该视图用于查看当前用户的baseline信息,普通用户以上权限均可以访问该视图。 表1 GS_SPM_SQL_BASELINE字段 名称 类型 描述 sql_namespace oid Schema的oid。 sql_hash bigint 当前Schema中SQL的唯一标识。 plan_hash bigint 当前SQL中的plan的唯一标识。 outline text outline文本,可固定当前计划的一组Hint。 status text 计划的状态。取值范围: UNACC:表示未接受的计划。 ACC:表示已经接受的计划。 FIXED:一种特殊的ACC状态的计划,计划的匹配优先级高于ACC状态的计划。 gplan boolean 当前outline对应的计划是否是gplan。 cost double precision 计划的总代价。 sql_text text SQL的文本串。 param_num integer SQL的参数数量。 source text baseline的来源。 creation_time timestamp with time zone baseline的创建时间。 modification_time timestamp with time zone baseline的修改时间。 jump_intercept_cnt bigint 当前baseline拦截计划跳变次数。 invalid boolean 当前baseline是否无效。 父主题: SPM计划管理
  • 语法格式 修改自定义存储过程的附加参数。 ALTER PROCEDURE procedure_name ( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) action [ ... ] [ RESTRICT ]; 其中附加参数action子句语法为: {CALLED ON NULL INPUT | STRICT} | {IMMUTABLE | STABLE | VOLATILE} | {SHIPPABLE | NOT SHIPPABLE} | {NOT FENCED | FENCED} | [ NOT ] LEAKPROOF | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER } | AUTHID { DEFINER | CURRENT_USER } | COST execution_cost | ROWS result_rows | SET configuration_parameter { { TO | = } { value | DEFAULT }| FROM CURRENT} | RESET {configuration_parameter | ALL} 修改自定义存储过程的名称。 ALTER PROCEDURE procedure_name( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) RENAME TO new_name; 修改自定义存储过程的所属者。 ALTER PROCEDURE procedure_name( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) OWNER TO new_owner; 修改自定义存储过程的模式。 ALTER PROCEDURE procedure_name( [ { [ argname ] [ argmode ] argtype} [, ...] ] ) SET SCHEMA new_schema;
  • 示例 --创建存储过程。 gaussdb=# CREATE OR REPLACE PROCEDURE test_proc(a int) IS proc_var int; BEGIN proc_var := a; END; / --用存储过程名重编译存储过程。 gaussdb=# ALTER PROCEDURE test_proc COMPILE; --用存储过程带类型签名重编译存储过程。 gaussdb=# ALTER PROCEDURE test_proc(int) COMPILE; --修改存储过程的执行规则为IMMUTABLE,即参数不变时返回结果相同。 gaussdb=# ALTER PROCEDURE test_proc(a int) IMMUTABLE; --新建用户。 gaussdb=# CREATE USER joe PASSWORD '********'; --修改存储过程的所有者。 gaussdb=# ALTER PROCEDURE test_proc(a int) OWNER TO joe; --新建模式。 gaussdb=# CREATE SCHEMA test; --修改存储过程的所属模式。 gaussdb=# ALTER PROCEDURE test_proc(a int) SET SCHEMA test1; --删除存储过程,函数名需要指定所属模式。 gaussdb=# DROP PROCEDURE test.test_proc; --删除新建的用户和模式。 gaussdb=# DROP USER joe; gaussdb=# DROP SCHEMA test;
  • 参数说明 procedure_name 要修改的存储过程名称。 取值范围:已存在的存储过程名。 argmode 标识该参数是输入、输出参数。 取值范围:IN/OUT/INOUT/VARIADIC。 argname 参数名称。 取值范围:字符串,符合标识符命名规范。 argtype 存储过程参数的类型。 CALLED ON NULL INPUT 表明该存储过程的某些参数是NULL的时候可以按照正常的方式调用。缺省时与指定此参数的作用相同。 IMMUTABLE 表示该存储过程在给出同样的参数值时总是返回同样的结果。 STABLE 表示该存储过程不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 VOLATILE 表示该存储过程值可以在一次表扫描内改变,不会做任何优化。 LEAKPROOF 表示该存储过程没有副作用,指出参数只包括返回值。LEAKPROOF只能由系统管理员设置。 EXTERNAL (可选)目的是和SQL兼容,这个特性适合于所有函数,而不仅是外部函数。 SECURITY INVOKER AUTHID CURRENT_USER 表明该存储过程将以调用它的用户的权限执行。缺省时与指定此参数的作用相同。 SECURITY INVOKER和AUTHID CURRENT_USER的功能相同。 SECURITY DEFINER AUTHID DEFINER 声明该存储过程将以创建它的用户的权限执行。 AUTHID DEFINER和SECURITY DEFINER的功能相同。 COST execution_cost 用来估计存储过程的执行成本。 execution_cost以cpu_operator_cost为单位。 取值范围:正数。 ROWS result_rows 估计存储过程返回的行数。用于存储过程返回的是一个集合。 取值范围:正数,默认值是1000行。 configuration_parameter value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 new_name 存储过程的新名称。要修改存储过程的所属模式,必须拥有新模式的CREATE权限。 取值范围:字符串,符合标识符命名规范。 new_owner 存储过程的新所有者。要修改存储过程的所有者,新所有者必须拥有该存储过程所属模式的CREATE权限。 取值范围:已存在的用户角色。 new_schema 存储过程的新模式。 取值范围:已存在的模式。
  • 注意事项 只有存储过程的所有者或者被授予了存储过程ALTER权限的用户才能执行ALTER PROCEDURE命令,系统管理员默认拥有该权限。针对所要修改属性的不同,还有以下权限约束: 如果存储过程中涉及对临时表相关的操作,则无法使用ALTER PROCEDURE。 修改存储过程的所有者或修改存储过程的模式,当前用户必须是该存储过程的所有者或者系统管理员,且该用户是新所有者角色的成员。 只有系统管理员和初始化用户可以将procedure的schema修改成public。
  • max_undo_workers 参数说明:异步回滚调用的undoworker线程数量,参数重启生效。 参数类型:整型 参数单位:无 取值范围:1 ~ 100 默认值:5 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:只影响同时并发进行异步回滚的最大线程数,设置过小可能会导致异步回滚速度慢,在系统中存在大量需要异步回滚的事务时,极低概率会影响 undo 回收的速度。当机器配置不高,系统中又存在大量需要异步回滚的事务时,该值设置过大会导致同时拉起的异步回滚线程数多,占用一定的系统资源。
  • 注意事项 目前仅支持ALTER PACKAGE OWNER功能,系统管理员默认拥有该权限,有以下权限约束: 当前用户必须是该package的所有者或者系统管理员,且该用户是新所有者角色的成员。 当打开三权分立时,即使是系统管理员,也必须拥有用户组权限才能修改package的owner,DEFINER类型package不允许修改所有者。 只有初始化用户才能修改package的owner为初始化用户。 当关闭三权分立时,仅系统管理员以上权限可以修改package所有者,但不允许修改所有者为运维管理员。 不允许系统管理员将DEFINER类型的package的所有者改为初始用户或运维管理员。
  • 示例 修改PACKAGE的所有者。 --创建数据库。 gaussdb=# CREATE DATABASE test DBCOMPATIBILITY 'ORA'; gaussdb=# \c test --创建PACKAGE。 test=# CREATE OR REPLACE PACKAGE test_pkg AS pkg_var int := 1; PROCEDURE test_pkg_proc(var int); END test_pkg; / test=# CREATE OR REPLACE PACKAGE BODY test_pkg AS PROCEDURE test_pkg_proc(var int) AS BEGIN pkg_var := 1; END; END test_pkg; / --创建用户。 test=# CREATE ROLE test PASSWORD '********'; --修改包的所有者。 test=# ALTER PACKAGE test_pkg OWNER TO test; --查询test_pkg的所有者。 test=# SELECT t1.pkgname,t2.rolname FROM gs_package t1, gs_roles t2 WHERE t1.pkgname = 'test_pkg' AND t1.pkgowner = t2.oid; pkgname | rolname ----------+--------- test_pkg | test (1 row) --删除。 test=# DROP PACKAGE test_pkg; test=# DROP ROLE test; --切换至默认数据库(根据实际情况修改数据库名)。 test=# \c postgres gaussdb=# DROP DATABASE test;
  • PG_RANGE PG_RANGE系统表存储关于范围类型的信息,除了PG_TYPE里类型的记录。 表1 PG_RANGE字段 名称 类型 引用 描述 rngtypid oid PG_TYPE.oid 范围类型的OID。 rngsubtype oid PG_TYPE.oid 这个范围类型的元素类型(子类型)的OID。 rngcollation oid PG_COLLATION.oid 用于范围比较的排序规则的OID,如果没有则为零。 rngsubopc oid PG_OPCLASS.oid 用于范围比较的子类型的操作符类的OID。 rngcanonical regproc PG_PROC.proname 转换范围类型为规范格式的函数名,如果没有则为0。 rngsubdiff regproc PG_PROC.proname 表示用于计算范围两元素差值的函数的名字,该函数的返回值为双精度类型,如果不存在该函数则rngsubdiff字段值为0。 若元素类型是离散的,则rngcanonical决定用于范围类型的排序顺序;若元素类型是不可排序的,则rngsubopc决定用于范围类型的排序顺序;若元素类型是可排序的,则rngsubopc和rngcollation决定用于范围类型的排序顺序。 父主题: 其他系统表
  • STATEMENT_COUNT 显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)和(DDL、DML、DCL)统计信息,如表1所示。 管理员权限用户查询STATEMENT_COUNT视图则能看到所有用户当前节点的统计信息。当集群或该节点重启时,计数将清零,并重新开始计数。计数以节点收到的查询数为准,包括集群内部进行的查询。例如,CN收到一条查询,如果一条查询语句包含多个子查询,这些子查询内容下发到DN时会被分别计数(无论单个DN还是多个DN)。 表1 STATEMENT_COUNT字段 名称 类型 描述 node_name text 节点名称。 user_name text 用户名。 select_count bigint select语句统计结果。 update_count bigint update语句统计结果。 insert_count bigint insert语句统计结果。 delete_count bigint delete语句统计结果。 mergeinto_count bigint merge into语句统计结果。 ddl_count bigint DDL语句的数量。该统计结果包含用户执行的SQL语句和数据库后台线程执行的SQL语句。 dml_count bigint DML语句的数量。该统计结果包含用户执行的SQL语句和数据库后台线程执行的SQL语句。 dcl_count bigint DCL语句的数量。该统计结果包含用户执行的SQL语句和数据库后台线程执行的SQL语句。 total_select_elapse bigint 总select的时间花费(单位:微秒)。 avg_select_elapse bigint 平均select的时间花费(单位:微秒)。 max_select_elapse bigint 最大select的时间花费(单位:微秒)。 min_select_elapse bigint 最小select的时间花费(单位:微秒)。 total_update_elapse bigint 总update的时间花费(单位:微秒)。 avg_update_elapse bigint 平均update的时间花费(单位:微秒)。 max_update_elapse bigint 最大update的时间花费(单位:微秒)。 min_update_elapse bigint 最小update的时间花费(单位:微秒)。 total_insert_elapse bigint 总insert的时间花费(单位:微秒)。 avg_insert_elapse bigint 平均insert的时间花费(单位:微秒)。 max_insert_elapse bigint 最大insert的时间花费(单位:微秒)。 min_insert_elapse bigint 最小insert的时间花费(单位:微秒)。 total_delete_elapse bigint 总delete的时间花费(单位:微秒)。 avg_delete_elapse bigint 平均delete的时间花费(单位:微秒)。 max_delete_elapse bigint 最大delete的时间花费(单位:微秒)。 min_delete_elapse bigint 最小delete的时间花费(单位:微秒)。 dbid oid 统计的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)所属的数据库id。 user_dml_count bigint 用户执行的DML语句的数量。 bg_dml_count bigint 数据库后台线程执行的DML语句的数量。 父主题: Query
  • GLOBAL_STATEMENT_COMPLEX_HISTORY 显示各个节点执行作业结束后的负载管理记录,如表1所示。 表1 GLOBAL_STATEMENT_COMPLEX_HISTORY的字段 名称 类型 描述 datid oid 连接后端的数据库OID。 dbname text 连接后端的数据库名称。 schemaname text 模式的名称。 nodename text 语句执行的CN名称。 username text 连接到后端的用户名。 application_name text 连接到后端的应用名。 client_addr inet 连接到后端的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部线程,如autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后端通讯的TCP端口号,如果使用UNIX套接字,则为-1。 query_band text 用于标示作业类型,可通过GUC参数query_band进行设置,默认为空字符串。 block_time bigint 语句执行前的阻塞时间,包含语句解析和优化时间,单位ms。 start_time timestamp with time zone 语句执行的开始时间。 finish_time timestamp with time zone 语句执行的结束时间。 duration bigint 语句实际执行的时间,单位ms。 estimate_total_time bigint 语句预估执行时间,单位ms。 status text 语句执行结束状态:正常为finished,异常为aborted。 abort_info text 语句执行结束状态为aborted时显示异常信息。 resource_pool text 用户使用的资源池。 control_group text 语句所使用的Cgroup。 estimate_memory integer 语句预估使用内存。 min_peak_memory integer 语句在所有DN上的最小内存峰值,单位MB。 max_peak_memory integer 语句在所有DN上的最大内存峰值,单位MB。 average_peak_memory integer 语句执行过程中的内存使用平均值,单位MB。 memory_skew_percent integer 语句各DN间的内存使用倾斜率。 spill_info text 语句在所有DN上的下盘信息: None:所有DN均未下盘。 All:所有DN均下盘。 [a:b]:数量为b个DN中有a个DN下盘。 min_spill_size integer 若发生下盘,所有DN上下盘的最小数据量,单位MB,默认为0。 max_spill_size integer 若发生下盘,所有DN上下盘的最大数据量,单位MB,默认为0。 average_spill_size integer 若发生下盘,所有DN上下盘的平均数据量,单位MB,默认为0。 spill_skew_percent integer 若发生下盘,DN间下盘倾斜率。 min_dn_time bigint 语句在所有DN上的最小执行时间,单位ms。 max_dn_time bigint 语句在所有DN上的最大执行时间,单位ms。 average_dn_time bigint 语句在所有DN上的平均执行时间,单位ms。 dntime_skew_percent integer 语句在各DN间的执行时间倾斜率。 min_cpu_time bigint 语句在所有DN上的最小CPU时间,单位ms。 max_cpu_time bigint 语句在所有DN上的最大CPU时间,单位ms。 total_cpu_time bigint 语句在所有DN上的CPU总时间,单位ms。 cpu_skew_percent integer 语句在DN间的CPU时间倾斜率。 min_peak_iops integer 语句在所有DN上的每秒最小I/O峰值(单位是万次/s)。 max_peak_iops integer 语句在所有DN上的每秒最大I/O峰值(单位是万次/s)。 average_peak_iops integer 语句在所有DN上的每秒平均I/O峰值(单位是万次/s)。 iops_skew_percent integer 语句在DN间的I/O倾斜率。 warning text 主要显示如下几类告警信息以及SQL自诊断相关告警: Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict queryid bigint 语句执行使用的内部query id。 query text 执行的语句。 query_plan text 语句的执行计划。 cpu_top1_node_name text cpu使用率第1的节点名称。 cpu_top2_node_name text cpu使用率第2的节点名称。 cpu_top3_node_name text cpu使用率第3的节点名称。 cpu_top4_node_name text cpu使用率第4的节点名称。 cpu_top5_node_name text cpu使用率第5的节点名称。 mem_top1_node_name text 内存使用量第1的节点名称。 mem_top2_node_name text 内存使用量第2的节点名称。 mem_top3_node_name text 内存使用量第3的节点名称。 mem_top4_node_name text 内存使用量第4的节点名称。 mem_top5_node_name text 内存使用量第5的节点名称。 cpu_top1_value bigint cpu使用率第1的值。 cpu_top2_value bigint cpu使用率第2的值。 cpu_top3_value bigint cpu使用率第3的值。 cpu_top4_value bigint cpu使用率第4的值。 cpu_top5_value bigint cpu使用率第5的值。 mem_top1_value bigint 内存使用量第1的值。 mem_top2_value bigint 内存使用量第2的值。 mem_top3_value bigint 内存使用量第3的值。 mem_top4_value bigint 内存使用量第4的值。 mem_top5_value bigint 内存使用量第5的值。 top_mem_dn text 内存使用量topN信息。 top_cpu_dn text cpu使用量topN信息。 node_group text 语句所属用户对应的node group。 父主题: Query
  • 简化输入 简化输入到 CS V日志文件,可以通过如下操作: 设置log_filename和log_rotation_age,为日志文件提供一个一致的、可预测的命名方案。通过日志文件名,预测一个独立的日志文件完成并进入准备导入状态的时间。 将log_rotation_size设为0来终止基于尺寸的日志回滚,因为基于尺寸的日志回滚让预测日志文件名变得非常的困难。 将log_truncate_on_rotation设为on以便区分在同一日志文件中旧的日志数据和新的日志数据。
  • csvlog定义 以“逗号分隔值” 即CSV(Comma Separated Value)的形式发出日志。 以下是简单的用来存储CSV形式日志输出的表定义: 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 29 CREATE TABLE gaussdb_log ( log_time timestamp(3) with time zone, node_name text, user_name text, database_name text, process_id bigint, connection_from text, "session_id" text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, query_id bigint, module text, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text ); 详细说明请参见表1。 表1 csvlog字段含义表 字段名 字段含义 字段名 字段含义 log_time 毫秒级的时间戳 module 日志所属模块 node_name 节点名称 error_severity ERRORSTATE代码 user_name 用户名 sql_state_code SQLSTATE代码 database_name 数据库名 message 错误消息 process_id 线程ID detail 详细错误消息 connection_from 客户主机:端口号 hint 提示 session_id 会话ID internal_query 内部查询(查询那些导致错误的信息,如果有的话) session_line_num 每个会话的行数 internal_query_pos 内部查询指针 command_tag 命令标签 context 环境 session_start_time 会话开始时间 query 错误发生位置的字符统计 virtual_transaction_id 常规事务 query_pos 错误发生位置指针 transaction_id 事务ID location 在 GaussDB 源代码中错误的位置(如果log_error_verbosity的值设为verbose ) query_id 查询ID application_name 应用名称 使用COPY FROM命令将日志文件导入这个表: 1 COPY gaussdb_log FROM '/opt/data/gs_log/logfile.csv' WITH csv; 此处的日志名“logfile.csv”要换成实际生成的日志的名称。
  • 示例 gaussdb=# SET log_min_messages = debug2; gaussdb=# SET logging_module = 'on(opt_choice)'; gaussdb=# CREATE TABLE t1(a int ,b int); gaussdb=# PREPARE x(int) AS SELECT * FROM t1; gaussdb=# EXPLAIN EXECUTE x(10); NOTICE: [Choosing C/G/A Plan]: GPlan, reason: Using pbe optimization. NOTICE: [Choosing C/G/A Plan]: CPlan, reason: First 5 times using CPlan. QUERY PLAN -------------------------------------------------- Data Node Scan (cost=0.00..0.00 rows=0 width=0) Node/s: All datanodes (2 rows) gaussdb=# DEALLOCATE x; gaussdb=# PREPARE x(int) AS SELECT * FROM t1; gaussdb=# SET session_type=single_node; gaussdb=# SET exec_target_node=datanode1; gaussdb=# EXPLAIN EXECUTE x(10); NOTICE: [Choosing C/G/A Plan]: GPlan, reason: Using pbe optimization. NOTICE: [Choosing C/G/A Plan]: GPlan, reason: Using pbe optimization. QUERY PLAN -------------------------------------------------- Data Node Scan (cost=0.00..0.00 rows=0 width=0) Node/s: datanode1 (2 rows) gaussdb=# DEALLOCATE x; gaussdb=# DROP TABLE t1;
  • exec_target_node 参数说明:指定当前会话的DML以及部分DDL(TRUNCATE、ALTER TABLE...TRUNCATE PARTITION...)语句执行的DN节点名,大小写敏感。如果DN节点名不合法,则在设置时报错。 仅GUC参数session_type设置为single_node时生效。 参数类型:字符串 参数单位:无 取值范围:当前集群内的所有DN节点名,可以通过查询PGXC_NODE系统表获取所有DN节点名。 默认值:"" 设置方式:该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。注意该参数不支持使用gs_guc全局设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:单节点会话模式下,若没有按照约束使用,可能导致数据不一致问题。 单节点会话模式具有如下约束: router功能在此场景下不生效。 node_name hint指定的DN不生效,按exec_target_node下发。 不支持涉及行级访问控制的语句。 不支持分布式备机读。 不支持高级包语句。 不支持GPC,enable_global_plancache参数打开时执行PBE报错。 在单节点会话模式下,使用PBE语句时,会导致计划类型直接选择GPlan。而如果已经生成计划后再指定单节点会话模式,则保持原有计划类型不变。
  • session_type 参数说明:指定当前会话的类型,大小写不敏感,根据用户实际取值生成执行计划。 参数类型:枚举类型 参数单位:无 取值范围: single_node:单节点会话,读写操作支持下推,根据GUC参数exec_target_node判断下推节点并生成执行计划。 global_read_only:跨节点只读会话,正常生成分布式计划,但禁止分布式写操作。 normal:默认会话,和原有行为保持一致,根据数据库原有逻辑执行计划。 默认值:normal 设置方式:该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。注意该参数不支持使用gs_guc全局设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:在单节点会话模式下(即session_type设置为single_node)执行数据插入时,数据分布的正确性由应用层保证,如果指定了错误的节点可能会发生数据不一致问题。
  • cluster_run_mode 参数说明:双集群容灾场景标识CN/DN节点属于主集群还是备集群。单集群使用默认值。 参数类型:枚举类型 参数单位:无 取值范围: cluster_primary:表示节点是主集群的节点。 cluster_standby:表示节点是备集群的节点。 默认值:cluster_primary 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:标记灾备集群使用的参数,不建议客户设置。 设置不当的风险与影响:修改后可能导致灾备集群异常。
  • enable_cluster_resize 参数说明:扩容工具在内核的唯一标识,此参数开启表示当前session为扩容工具连接。 参数类型:布尔型 参数单位:无 取值范围: on:表示当前session为扩容工具连接。 off:表示当前session不是扩容工具连接。 默认值:off 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:此参数用于内部运维场景,请勿随意开启。 设置不当的风险与影响:用户强制设置为on时,内核认为当前session为扩容工具,可以执行扩容相关系统函数或DDL接口,存在误用风险。
  • change_cluster_mode 参数说明:用于表示集群是否处于模式切换过程中,其中“模式切换”是指:一主两备集群切换为一主一备一日志集群,或一主一备一日志集群切换为一主两备集群,或一主一备一日志集群中备DN和日志DN互切。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 0表示不处于集群模式切换过程中。 1表示处于集群模式切换过程中。 其他值无实际意义,效果等同于设置为0。 默认值:0 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:该参数用于控制“分布式备机读”功能是否正常可用。当设置为1时,“分布式备机读”功能将无法使用,请谨慎设置该参数。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • enable_gpi_auto_update 参数说明:控制在分区DDL命令中是否默认更新Global索引。 参数类型:布尔型 参数单位:无 取值范围: on:表示默认更新Global索引,此时无论分区DDL带不带UPDATE GLOBAL INDEX子句,都会更新Global索引。 off:表示默认不更新Global索引,此时只有当分区DDL带UPDATE GLOBAL INDEX子句时,才会更新Global索引。 默认值:off 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置为off,当分区DDL未带UPDATE GLOBAL INDEX子句时,会使Global索引不可用。该参数必须在CN和DN设置为相同值,否则可能会导致Global索引功能异常。
  • enable_partrouting_optimization 参数说明:控制是否支持分区表插入优化。 参数类型:布尔型 参数单位:无 取值范围: on:表示支持分区表插入优化,针对inert select语句,当select包含常量分区键时,insert只需要做一次分区路由,提升性能。 off:表示不支持分区表插入优化,插入每一条数据前都需要做一次分区路由去确定插入哪一张分区表。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果关闭该参数,部分插入分区表的场景会没有该参数带来的性能优化效果,无其他影响。 分区表插入优化约束: 只支持Insert select语句。 insert into ta select from tb中,插入a表中所有分区键的值,对应select结果集中的列值必须是常量(可以不存在该列,因为默认值也是恒定的)。 insert into ta select c,d from b where tb.c='1'或select '1' as c, d from tb则可以判断结果列tb.c为常量。 insert into ta select c,d from b where tb.c=func('1'); 如果func()不是volatile函数,也不是包含非常量参数的stable/immutable函数,则可以判断tb.c为常量。 如果列值为聚合函数的返回值,如:insert into ta select count(c),d from b where tb.c='1' group by c, d; 不能判断count(c)为常量。 不支持upsert子句。 不支持包含before和instead触发器的表,因为可能改变要插入的数据。
  • max_concurrent_autonomous_transactions 参数说明:自治事务最大连接数,即同一时间自治事务执行的最大并发数。当设置为0时,将无法执行自治事务。 参数类型:整型 参数单位:无 取值范围:0 ~ 10000,理论最大值为10000,实际最大值为动态值,计算公式为“262143 - job_queue_processes - autovacuum_max_workers - max_inner_tool_connections - max_connections - AUXILIARY_BACKENDS - AV_LAUNCHER_PROCS”。其中,job_queue_processes、autovacuum_max_workers、max_inner_tool_connections和max_connections的值取决于对应GUC参数的设置;AUXILIARY_BACKENDS为预留辅助线程数,固定为20;AV_LAUNCHER_PROCS为预留autovacuum的launcher线程数,固定为2。 默认值: 独立部署:80(60核CPU/480G内存);40(32核CPU/256G内存);20(16核CPU/128G内存);10(8核CPU/64G内存,4核CPU/32G内存,4核CPU/16G内存) 设置方式:该参数属于POSTMASTER类型参数,请参考表表1中对应设置方法进行设置。 设置建议:根据实际业务需要和硬件配置设置此参数,建议不超过max_connections的1/10。若仅调大此参数,未同比例调整内存参数,业务压力大时,容易出现内存不足,报错提示“memory is temporarily unavailable”。 设置不当的风险与影响:若升级过程中涉及此参数范围变更,并且在commit前修改了此参数,则如果执行升级回滚,需要将此参数调整至升级前允许的范围,否则可能导致数据库无法启动。
  • enable_default_ustore_table 参数说明:指定是否默认使用Ustore存储引擎。仅当enable_ustore参数开启时,该参数设置有效。该参数为on时,创建的表默认都为Ustore表;该参数为off时,创建的表默认都为Astore表。升级场景下该参数的默认值会优先保证兼容性,即升级后的默认值与老版本的取值一致。 参数类型:布尔型 参数单位:无 取值范围: on:表示默认使用Ustore存储引擎。 off:表示默认不使用Ustore存储引擎。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:需要特别注意的是,使用Ustore表时,必须要开启track_counts和track_activities参数,否则会引起空间膨胀。
  • reserve_space_for_nullable_atts 参数说明:指定是否为Ustore表的可空属性预留空间。 参数类型:布尔型 参数单位:无 取值范围: on:表示为Ustore表的可空属性预留空间。 off:表示不为Ustore表的可空属性预留空间。 默认值:on 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • datanode_heartbeat_interval 参数说明:设置心跳线程间发送心跳消息的时间间隔。 参数类型:整型 参数单位:毫秒(ms) 取值范围:1000 ~ 60000 默认值:1000(即1s) 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。例如,不带单位取值1000,表示datanode_heartbeat_interval为1000ms;带单位取值1s,表示datanode_heartbeat_interval为1s。取值如果要带单位,必须为ms、s、min、h、d。 设置建议:建议取值不超过wal_receiver_timeout/2。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • dfs_partition_directory_length 参数说明:在HDFS文件系统上,构造HDFS VALUE分区表的分区目录时,目录名长度的上限值。 参数类型:整型 参数单位:无 取值范围:92 ~ 7999 默认值:512 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
共100000条