华为云用户手册

  • plan_mode_seed 参数说明:该参数为调测参数,目前仅支持OPTIMIZE_PLAN和RANDOM_PLAN两种。该参数可在PDB级别设置。 参数类型:整型 参数单位:无 取值范围:-1 ~ 2147483647 0:表示OPTIMIZE_PLAN模式,即通过动态规划算法进行代价估算生成最优plan。 -1:表示RANDOM_PLAN模式,即随机生成plan,且用户不指定生成随机数的种子标识符seed值,由优化器随机生成[1, 2147483647]范围内的整数值,并根据随机数生成随机的执行计划。 [1, 2147483647]范围内的整数值:表示RANDOM_PLAN模式,即随机生成plan,且用户指定的生成随机数的种子标识符seed值,优化器根据seed值生成随机的执行计划。 默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。
  • costbased_rewrite_rule_timeout 参数说明:执行的SQL在计划生成阶段时,如果使用各规则做代价评估的整体时间超过该参数设置的超时时间,则对本次请求后续流程关闭基于代价的评估策略,转化为基于规则的改写策略。当查询改写阶段开启基于代价的评估策略后该参数生效。多租场景下,该参数可在PDB级别设置。 参数类型:整型 参数单位:ms(毫秒) 取值范围:-1 ~ 300,000 默认值:-1。在PDB场景内,若未设置该参数,则继承来自全局的设置。 该参数受GUC参数costbased_rewrite_rule影响,当costbased_rewrite_rule值不为none时,该参数生效。 如果设置该参数值为0,表示对当前SQL关闭基于代价的改写策略。 如果设置该参数值为-1,表示对当前SQL关闭超时时间控制。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:可根据实际业务需求评估调整,当该值设置过大或过小时都可能带来额外的性能开销,影响最终的查询性能。
  • gpc_clean_timeout 参数说明:本参数用于控制不使用的共享计划的保留时间。在开启enable_global_plancache的情况下,如果共享计划列表里的计划超过gpc_clean_timeout的时间没有被使用,则会被清理掉。 参数类型:整型 参数单位:s(秒) 取值范围:300 ~ 86400 默认值:1800(即30min) 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,设置为300,不带单位,表示300s;设置为30min,带单位,表示30min。取值如果要带单位,必须为s、min、h、d。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过大可能导致GPC占用内存过多,建议充分测试后设置合理值。
  • enable_pbe_optimization 参数说明:设置优化器是否对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化,优化原理是使FQS选择gplan计划。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示优化器将优化PBE语句的查询计划,在FQS下选择gplan。 off:表示不使用优化。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,在不希望FQS选择gplan时可设置为off。 设置不当的风险与影响:关闭可能会导致某些场景走cplan。
  • enable_global_plancache 参数说明:设置是否对PBE查询和存储过程中语句的执行计划进行缓存共享,开启该功能可以节省高并发下数据库节点的内存使用。多租数据库特性(enable_mtd)需要关闭该参数。 在打开enable_global_plancache的情况下,为保证GPC生效,默认local_syscache_threshold不小于16MB。即如果当前local_syscache_threshold小于16MB,则设置为16MB,如大于16MB,则不改变。 参数类型:布尔型 参数单位:无 取值范围: on:表示对PBE查询和存储过程中语句的执行计划进行缓存共享。 off:表示不共享。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭会导致对应计划缓存不共享,资源占用增加。
  • costbased_rewrite_rule_max_iterations 参数说明:执行的SQL在计划生成阶段时,如果对同一规则中满足做代价评估的条件数超过该参数的取值,则对本次请求中超过阈值的条件关闭基于代价的评估策略,转化为基于规则的改写策略。当查询改写阶段开启基于代价的评估策略后该参数生效。多租场景下,该参数可在PDB级别设置。 参数类型:整型 参数单位:无 取值范围:0 ~ 1000 默认值:10。在PDB场景内,若未设置该参数,则继承来自全局的设置。 该参数受GUC参数costbased_rewrite_rule影响,当costbased_rewrite_rule值不为none时,该参数生效。 如果设置该参数值为0,表示对当前SQL关闭基于代价的改写策略。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:可根据实际业务需求评估调整,当该值设置过大或过小时都可能带来额外的性能开销,影响最终的查询性能。
  • enable_opfusion 参数说明:控制是否对简单增删改查进行优化。该参数可在PDB级别设置。 简单查询限制如下: 只支持indexscan和indexonlyscan,且全部WHERE语句的过滤条件都在索引上。 只支持单表增删改查,不支持join、using。 只支持行存表,不支持分区表,表不支持有触发器。 不支持active sql、QPS等信息统计特性。 不支持正在扩容和缩容的表。 不支持查询或者修改系统列。 只支持简单SELECT语句,例如: SELECT c3 FROM t1 WHERE c1 = ? and c2 =10; 仅可以查询目标表的列,c1和c2列为索引列,后边可以是常量或者参数,可以使用 for update。 只支持简单INSERT语句,例如: INSERT INTO t1 VALUES (?,10,?); 仅支持一个VALUES,VALUES里面的类型可以是常量和参数,不支持returning。 只支持简单DELETE语句,例如: DELETE FROM t1 WHERE c1 = ? and c2 = 10; c1和c2列为索引列,后边可以是常量或者参数。 只支持简单UPDATE语句,例如: UPDATE t1 SET c3 = c3+? WHERE c1 = ? and c2 = 10; c3列修改的值可以是常量和参数,也可以是一个简单的表达式,c1和c2列为索引列,后边可以是常量或者参数。 支持带序列表的简单插入,例如: CREATE SEQUENCE SEQ; INSERT INTO t1 VALUES (10, nextval('SEQ'::regclass)); t1中第二列为序列自增。仅在enable_bypass_insert_sequence参数打开的状态下生效。 参数类型:布尔型 参数单位:无 取值范围: on:表示使用。 off:表示不使用。 默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭有可能带来查询性能劣化。
  • cost_param 参数说明:该参数用于控制在特定的客户场景中,使用不同的估算方法,使得代价模型估算更准确。通过将参数修改为不同的值,选择开启不同的方法。此参数可以同时控制多种方法,每一种方法由不同的数字编号控制,参数取值与方法对应的数字编号做“与”操作的结果不为0时,表示该方法开启。该参数可在PDB级别设置。 当cost_param & 1不为0,表示对于求不等值连接选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估算中更加准确。当前版本已弃用cost_param & 1 不为0时的路径,默认选择更优的估算公式。 当cost_param & 2不为0,表示求多个过滤条件(Filter)的选择率时,选择最小的作为总的选择率,而非两者乘积,此方法在过滤条件的列之间关联性较强时估算更加准确。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:在明确需要调整选择率的场景后,设置对应参数值。 设置不当的风险与影响:设置不当可能会导致最终的代价估算不符合预期,建议在充分测试后确认应当设置的参数值。
  • var_eq_const_selectivity 参数说明:整型const选择率是否使用新型选择率模型进行估算。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示使用新型选择率模型计算整型const的选择率。 当整型不落入MCV且不为NULL值时,若落入直方图,则利用直方图左右边界情况进行估算;若不落入直方图,则使用表的行数进行估算。 当整型为NULL值或者MCV值时,使用原逻辑计算选择率。 off:表示使用原有的选择率计算模型。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若启用该参数,建议充分测试评估相应场景是否能带来性能提升。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • enable_partitionwise 参数说明:分区表连接操作是否选择智能算法。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示选择智能算法。 off:表示不选择智能算法。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:打开前确认是否开启SMP,否则可能影响非SMP场景下分区表Join操作的性能。
  • analysis_options 参数说明:通过开启对应选项使用相应的定位功能,包括数据校验、性能统计等,具体参见取值范围中的描述。该参数可在PDB级别设置。 参数类型:字符串 参数单位:无 取值范围: 该参数每次设置将会通过集合操作的方式对当前值做修改: gaussdb=# show analysis_options; analysis_options ------------------------------------------------------------ ALL,on(),off(LLVM_COMPILE,HASH_CONFLICT,STREAM_DATA_CHECK) (1 row) gaussdb=# SET analysis_options = 'on(LLVM_COMPILE)'; SET gaussdb=# show analysis_options; analysis_options ----------------------------------------------------------- ALL,on(LLVM_COMPILE),off(HASH_CONFLICT,STREAM_DATA_CHECK) (1 row) gaussdb=# SET analysis_options = 'on(HASH_CONFLICT)'; SET gaussdb=# show analysis_options; analysis_options ----------------------------------------------------------- ALL,on(LLVM_COMPILE,HASH_CONFLICT),off(STREAM_DATA_CHECK) (1 row) gaussdb=# SET analysis_options = 'off(ALL)'; SET gaussdb=# show analysis_options; analysis_options ------------------------------------------------------------ ALL,on(),off(LLVM_COMPILE,HASH_CONFLICT,STREAM_DATA_CHECK) (1 row) LLVM_COMPILE:表示在explain performance显示界面中显示每个线程的codegen编译时间。 HASH_CONFLICT:表示在数据库节点进程的gs_log目录的log日志中显示hash表的统计信息,包括hash表大小、hash链长、hash冲突情况。 STREAM_DATA_CHECK:表示对网络传输前后的数据进行CRC校验。 默认值:off(ALL),不开启任何定位功能。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如需手动设置,需要明确预期显示的结果是否符合需求。
  • enable_partition_pseudo_predicate 参数说明:在指定分区查询场景下,是否使用伪谓词改写的方式计算指定分区查询的选择率。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示使用伪谓词改写。 off:表示不使用伪谓词改写。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若启用该参数,建议充分测试评估相应场景是否能带来性能提升。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • partition_page_estimation 参数说明:分区表页面是否通过剪枝结果进行页面估算优化。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示使用剪枝结果进行页面估算优化。 off:表示不使用剪枝结果进行页面估算优化。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若启用该参数,建议充分测试评估相应场景是否能带来性能提升。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • partition_iterator_elimination 参数说明:分区表在分区剪枝结果为一个分区时,是否消除分区迭代算子来提升执行效率。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示消除分区迭代算子。 off:表示不消除分区迭代算子。 默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:关闭可能会导致查询性能下降。
  • enable_functional_dependency 参数说明:ANALYZE生成的多列统计信息是否包含函数依赖统计信息,是否应用函数依赖统计信息计算选择率。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示执行ANALYZE生成的多列统计信息包含函数依赖统计信息,并且计算选择率会使用函数依赖统计信息。 off:表示执行ANALYZE生成的多列统计信息不包含函数依赖统计信息,并且计算选择率不会使用函数依赖统计信息。 默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若启用该参数,建议充分测试评估相应场景是否能带来性能提升。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • explain_dna_file 参数说明:指定explain_perf_mode为run时,指定导出的目标文件。该参数可在PDB级别设置。 参数类型:字符串 参数单位:无 取值范围:绝对路径加上.csv格式的文件名。 默认值:""。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值,如有需要根据业务场景进行设置。 设置不当的风险与影响:可能会带来文件写入的开销。
  • enable_csqual_pushdown 参数说明:设置进行查询时,是否要将过滤条件下推,进行Rough Check。该参数可在PDB级别设置。 参数类型:布尔型 参数单位:无 取值范围: on:表示进行查询时,将过滤条件下推,进行Rough Check。 off:表示进行查询时,不将过滤条件下推,进行Rough Check。 默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:如果查询涉及大量数据的过滤,关闭过滤条件下推可能会带来性能上的下降。
  • cost_model_version 参数说明:此参数用来指定优化器代价模型的版本。可以视作一个保护参数,用来禁用最新的优化器代价模型,保持和旧版本计划一致。该参数可在PDB级别设置。 参数类型:整型 参数单位:无 取值范围:0、1、2、3、4、5 0:表示使用最新的cost估算模型。当前版本等价于5。 1:表示使用原始的cost估算模型。 2:表示在1的基础上,使用增强的coalesce表达式估算、hash join代价估算、semi/anti join代价估算。 3:表示在2的基础上,使用边界矫正估计器估算NDV, indexscan的hint可以作用于indexonlyscan。 4:表示在3的基础上,使用分区级统计信息参与代价估算。 5:表示在4的基础上,增强outer join计算Filter的代价估算,使得基于代价的查询重写更加准确;增强计算选择率时对outer join外表的filter条件的计算优化,可用enable_poisson_outer_optimization参数单独控制。 默认值:0。在PDB场景内,若未设置该参数,则继承来自全局的设置。 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:数据库升级时,建议和升级前版本保持一致;新安装环境时,建议设置为默认值。 设置不当的风险与影响:改变此参数,可能会导致很多SQL计划的改变,因此修改前请谨慎评估。
  • 示例 -- 生成一个UUID类型的序列号 gaussdb=# SELECT uuid(); uuid -------------------------------------- 846b9d00-172d-c63d-4a03-e8b4700370e0 (1 row) -- 创建表 gaussdb=# CREATE TABLE uuid_test(id int, test uuid); -- 插入数据,使用系统生成的uuid插入数据 gaussdb=# INSERT INTO uuid_test VALUES(1, uuid()::uuid); -- 插入数据,使用示例格式插入数据 gaussdb=# INSERT INTO uuid_test VALUES(2, 'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11'); gaussdb=# INSERT INTO uuid_test VALUES(3, '{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}'); gaussdb=# INSERT INTO uuid_test VALUES(4, 'a0eebc999c0b4ef8bb6d6bb9bd380a11'); gaussdb=# INSERT INTO uuid_test VALUES(5, 'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11'); -- 查看数据,输出时以标准格式输出 gaussdb=# SELECT * FROM uuid_test; id | test ----+-------------------------------------- 1 | 1b52051c-1731-c63d-4a03-e8b4700370e0 2 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 3 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 4 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 5 | a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11 (5 rows) -- 删除表 gaussdb=# DROPTABLE uuid_test;
  • STAT_SYS_TABLES 显示当前节点内pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息,如表1所示。 表1 STAT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表所在的Schema名。 relname name 表名。 seq_scan bigint 该表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。在Ustore表中仅代表不活跃行指针数量。 last_vacuum timestamp with time zone 最后一次该表是手动清理的(不计算VACUUM FULL)时间。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析该表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析的时间。 vacuum_count bigint 这个表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 该表被autovacuum清理的次数。 analyze_count bigint 该表被手动分析的次数。 autoanalyze_count bigint 该表被autovacuum守护线程分析的次数。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Object
  • ADM_RECYCLEBIN ADM_RECYCLEBIN显示所有回收站的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 ADM_RECYCLEBIN字段 名称 类型 描述 owner character varying(128) 对象的原始所有者名称。 object_name character varying(128) 对象的新名称。 original_name character varying(128) 对象的原始名称。 operation character varying(18) 对对象执行的操作: DROP:对象已删除(对象不再需要)。 TRUNCATE:对象被清空。 type character varying(25) 对象的类型。 ts_name character varying(30) 对象所属的表空间名称。 createtime character varying(19) 创建对象的时间戳。 droptime character varying(19) 删除对象的时间戳。 dropscn numeric 将对象移动到回收站的事务的系统更改编号(SCN)。 partition_name character varying(128) 已删除的分区的名称。 can_undrop character varying(3) 对象是否可以闪回。 can_purge character varying(3) 对象是否可以清除。 related numeric 父对象的对象编号。 base_object oid 基对象的对象编号。 purge_object oid 被清除的对象的对象编号。 space numeric 对象使用的块数。 父主题: 其他系统视图
  • PG_PLTEMPLATE PG_PLTEMPLATE系统表存储过程语言的“模板”信息。 表1 PG_PLTEMPLATE字段 名称 类型 描述 tmplname name 这个模板所应用的语言的名称。 tmpltrusted boolean 如果语言被认为是可信的,则为真。否则为假。 tmpldbacreate boolean 如果语言是由数据库所有者创建的,则为真。否则为假。 tmplhandler text 调用处理器函数的名称。 tmplinline text 匿名块处理器的名称,若没有则为NULL。 tmplvalidator text 校验函数的名称,如果没有则为NULL。 tmpllibrary text 实现语言的共享库的路径。 tmplacl aclitem[] 模板的访问权限(未使用)。 父主题: 其他系统表
  • ecpg与Pro*C兼容性对比 ecpg是 GaussDB 提供的一种用于C语言程序的嵌入式SQL预处理器,与A数据库Pro*C预处理器在编译执行命令、语法、嵌入式语句等行为和语义上存在差异。 ecpg与Pro*C的相关使用差异对比: 目前ecpg不支持EXEC SQL CONTEXT ALLOCATE、EXEC SQL CONTEXT USE、EXEC SQL CONTEXT FREE。 ecpg当前不支持CONTEXT申请、使用、释放操作,ecpg有独立的内存管理机制。多线程模式下,ecpg在每个线程中独立地建立连接、执行SQL语句以及相关资源的释放。这一使用方式与Pro*C多线程程模式下每个线程各自进行CONTEXT相关申请与释放的处理逻辑一致。 目前ecpg不支持EXEC SQL COMMIT WORK RELEASE。 在ecpg中,当业务语句执行COMMIT之后,并没有RELEASE选项,需要通过调用EXEC SQL DISCONNECT、EXEC SQL CLOSE等命令来实现相关资源的释放。Pro*C中EXEC SQL COMMIT带有RELEASE选项。用于释放程序持有的所有连接、游标等资源信息。 目前ecpg不支持EXEC SQL ENABLE THREAD。 ecpg编译选项中开启宏定义,在main函数的.pgc文件中定义(define)ENABLE_THREAD_SAFETY。 目前ecpg不支持存储过程、Package、匿名块、闪回等特性语法。 父主题: 基于ecpg开发
  • SUMMARY_TRANSACTIONS_RUNNING_XA CTS 显示数据库主节点运行事务的信息汇总,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 SUMMARY_TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务对应的事务管理器中的槽位句柄,该值恒为-1。 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 其余节点发送给当前节点的事务id,该值恒为0。 dbid oid 事务对应的数据库id。 父主题: Transaction
  • 语法 匿名块的语法参见图1。 图1 anonymous_block::= 对以上语法图的解释如下: 匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。输入“/”按回车执行它。 最后的结束符“/”必须独占一行,不能直接跟在END后面。 声明部分包括变量定义、类型、游标定义等。 最简单的匿名块不执行任何命令。但一定要在任意实施块里至少有一个语句,甚至是一个NULL语句。 匿名块中执行存储过程DDL语句,例如创建存储过程、重编译存储过程、实例化包等,在匿名块事务提交前会有部分临时内存申请在顶层SessionTempMemoryContext(例如:PL/pgSQL function context、PL/pgSQL package init context等),申请在顶层ExecutorTopMemoryContext(例如:ResourceOwnerCxt等),申请的临时内存在匿名块事务提交后释放。如果遇到内存不足场景,请调整max_dynamic_memory至合适值后重试。 下面列举了基本的匿名块程序: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 --空语句块 gaussdb=# BEGIN NULL; END; / ANONYMOUS BLOCK EXECUTE --将信息打印到控制台: gaussdb=# BEGIN dbe_output.print_line('hello world!'); END; / hello world! ANONYMOUS BLOCK EXECUTE --将变量内容打印到控制台: gaussdb=# DECLARE my_var VARCHAR2(30); BEGIN my_var :='world'; dbe_output.print_line('hello'||my_var); END; / helloworld ANONYMOUS BLOCK EXECUTE
  • 约束说明 job只能通过dbe_task高级包提供的接口进行创建、更新、删除操作,因为高级包的接口中会考虑所有数据库主节点间job信息的同步和pg_job与pg_job_proc表主键的关联操作,如果通过DML语句对pg_job表进行增删改,会导致job信息在数据库主节点间不一致和系统表无法关联变更的混乱问题,会严重影响job内部的管理。 由于用户创建的每个任务和数据库主节点绑定,当任务运行过程中,该数据库主节点故障,则该任务的状态无法实时刷新,仍为‘r’状态,需要等数据库主节点启动正常后才能刷新为‘s’状态。如果在任务未执行时数据库主节点故障,则该数据库主节点上的任务都得不到正常的调度和执行,需要人为干预让该数据库主节点恢复正常,或进行节点删除/替换,job才能正常的调度和执行。 job在定时执行过程中,需要在当前job所属的数据库主节点上实时更新该job的运行状态、最近执行开始时间、最近执行结束时间、下次开始时间和失败次数(如果job执行失败)等相关参数信息到pg_job系统表中,并同步到其他数据库主节点,保证job信息的一致性。如果其他数据库主节点存在节点故障,那么job所属数据库主节点会同步超时重发的操作,导致job执行时间变长,但数据库主节点间同步超时失败后,原数据库主节点上pg_job表中job的相关信息仍然能正常更新,且job能正常执行成功。当故障数据库主节点恢复正常后,可能出现该数据库主节点上pg_job表中当前job的执行时间、运行状态等参数与原数据库主节点上不一致的情况,需要原数据库主节点上再次执行该job后才能保证job信息的同步。 对于并发同时有多个job到达执行时间的场景,由于会为每个job创建一个线程来执行job,并且系统内部启动每个线程的时间会有延迟,因此会导致同时并发执行的job的开始时间有延迟,每个job的延迟时间在0.1ms左右。
  • GS_ILM_PA RAM GS_ILM_PARAM系统表为特性参数表,记录控制ILM特性相关参数,如后台调度的各种控制参数。 表1 GS_ILM_PARAM字段 名称 类型 描述 idx smallint 参数编号。 name name 参数名称。 value double precision 参数值。 表2 GS_ILM_PARAM特性参数范围 参数编号 参数值 描述 1 EXECUTION_INTERVAL ADO Task的执行频率,单位分钟,默认值15。取值范围为大于等于1小于等于2147483647的整数或浮点数,作用时向下取整。 2 RETENTION_TIME ADO相关历史的保留时长,单位天,默认值30。取值范围大于等于1小于等于2147483647的整数或浮点数,作用时向下取整。 7 ENABLE 后台调度的状态。该参数不支持使用DBE_ILM_ADMIN.CUSTOMIZE_ILM修改,应使用DBE_ILM_ADMIN.DISABLE_ILM和DBE_ILM_ADMIN.ENABLE_ILM修改。 11 POLICY_TIME 控制ADO的条件单位是天还是秒,秒仅用来做测试用。 取值范围: 0:单位为‘天’,默认值为0。 1:单位为‘秒’,一般用于测试场景。 12 ABS_JOBLIMIT 控制一次ADO Task最多生成多少个ADO Job,默认值10。取值范围大于等于0小于等于2147483647的整数或浮点数,作用时向下取整。 13 JOB_SIZELIMIT 控制单个ADO Job可以处理的最大字节数,单位兆,默认值1024。取值范围大于等于0小于等于2147483647的整数或浮点数,作用时向下取整。 14 WIND_DURATION 维护窗口持续时长,单位分钟,默认240分钟(4小时);取值范围为大于等于0小于1440(24小时)的整数。 15 BLOCK_LIMITS 控制实例级的行存压缩速率上限,默认是40;取值范围是0到10000(0表示不限制);单位是block/ms,表示每毫秒最多压缩多少个block。 16 ENABLE_META_COMPRESSION 是否开启header压缩,默认为0,0表示关闭,1表示开启。 说明: 设置此参数为1时,对于单行数据较短的表,压缩率会有一定提升,但是访问压缩行的性能会有较大幅度的下降。若数据库多是单行数据较长的表,不建议开启此参数。 17 SAMPLE_MIN 常量编码和等值编码采样步长最小值,默认为10,取值范围[1, 100],支持小数输入,小数会自动向下取整。 18 SAMPLE_MAX 常量编码和等值编码采样步长最大值,默认为10,取值范围[1, 100],支持小数输入,小数会自动向下取整。 19 CONST_PRIO 常量编码优先级,默认为40,取值范围[0, 100],100表示关闭常量编码,支持小数输入,小数会自动向下取整。 20 CONST_THRESHOLD 常量编码阈值,默认为90,取值范围[1, 100],表示一列常量值的占比超过该阈值时进行常量编码,支持小数输入,小数会自动向下取整。 21 EQVALUE_PRIO 等值编码优先级,默认为60,取值范围[0, 100],100表示关闭等值编码,支持小数输入,小数会自动向下取整。 22 EQVALUE_THRESHOLD 等值编码阈值,默认为80,取值范围[1, 100],表示两列数据的等值比例超过该阈值时进行等值编码,支持小数输入,小数会自动向下取整。 23 ENABLE_DELTA_ENCODE_SWITCH 差值编码开关,默认为1,支持小数输入,0表示关闭,1表示开启,小数会自动向下取整。 24 LZ4_COMPRESSION_LEVEL lz4压缩等级,默认为0,取值范围[0, 16],支持小数输入,小数会自动向下取整。 25 ENABLE_LZ4_PARTIAL_DECOMPRESSION 部分解压开关,默认为1,支持小数输入,0表示关闭,1表示开启,小数会自动向下取整。 父主题: OLTP表压缩
  • LOCAL_REL_IOSTAT 获取当前节点中数据文件I/O状态的累计值,显示为所有数据文件I/O状态的总和,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。在PDB中通过该视图查询到的I/O统计信息是被持久化的,数据库重启后不会清零,会不断进行累计。 表1 LOCAL_REL_IOSTAT字段 名称 类型 描述 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件的块的数目。 phyblkwrt bigint 写物理文件的块的数目。 dbid oid 未开启数据库多租特性的场景下,该值始终为0;开启数据库多租特性的场景下,在PDB中查询时为PDB对应的数据库id,在CDB中查询时该值始终为0。 父主题: File
  • 执行具有输入参数的语句 准备一个普通语句,通过替换参数(在想要替换参数的地方输入问号)执行它的特定版本。使用EXECUTE语句通过USING子句给定参数执行准备语句。 示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?, ?);"; EXEC SQL END DECLARE SECTION; /*PREPARE 准备一个语句用于执行*/ EXEC SQL PREPARE mystmt FROM :stmt; ... /*单引号为有效字符,若用字符串需用双引号*/ EXEC SQL EXECUTE mystmt USING 42, 'foobar'; /*当预备语句不再使用,请及时释放*/ EXEC SQL DEALLOCATE PREPARE name; 父主题: 执行动态SQL语句
  • GS_SESSION_MEMORY_DETAIL GS_SESSION_MEMORY_DETAIL显示会话的内存使用情况,以MemoryContext节点来统计。当开启线程池(enable_thread_pool = on)时,该视图包含所有线程和会话的内存使用情况。当GUC参数enable_memory_limit的值为off时,本视图不可用。 其中内存上下文“TempSmallContextGroup”,记录当前线程中所有内存上下文字段“totalsize”小于8192字节的信息汇总,并且内存上下文统计计数记录到“usedsize”字段中。所以在视图中,“TempSmallContextGroup”内存上下文中的“totalsize”和“freesize”是该线程中所有内存上下文“totalsize”小于8192字节的汇总总和,usedsize字段表示统计的内存上下文个数。 可通过"SELECT * FROM gs_session_memctx_detail(threadid, '');"将某个线程所有内存上下文信息记录到“$GAUSSLOG/gs_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过下表sessid中获得。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 GS_SESSION_MEMORY_DETAIL字段 名称 类型 描述 sessid text 关闭线程池(enable_thread_pool = off)时该字段表示线程启动时间+session标识(字符串信息为timestamp.sessionid)。 开启线程池(enable_thread_pool = on)时,内存上下文是线程级别的,则对应的该字段表示线程启动时间+线程标识(字符串信息为timestamp.threadid),内存上下文是session级别的,则对应的该字段表示线程启动时间+session标识(字符串信息为timestamp.sessionid)。 sesstype text 线程名称。 contextname text 内存上下文名称。 level smallint 当前上下文在整体内存上下文中的层级。 parent text 父内存上下文名称。 totalsize bigint 当前内存上下文的内存总数,单位Byte。 freesize bigint 当前内存上下文中已释放的内存总数,单位Byte。 usedsize bigint 当前内存上下文中已使用的内存总数,单位Byte;“TempSmallContextGroup”内存上下文中该字段含义为统计计数。 该视图为运维视图,用于定位内存问题时使用,不要并发查询该视图,并发查询该视图会随着并发数的增多导致新连接接入等待时间增加,长时间无法接入。 父主题: 其他系统视图
共100000条
提示

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