华为云用户手册

  • PLAN_TABLE PLAN_TABLE视图显示用户通过执行EXPLAIN PLAN收集到的计划信息。计划信息的生命周期是session级别,session退出后相应的数据将被清除。同时不同session和不同user间的数据是相互隔离的。 表1 PLAN_TABLE字段 名称 类型 描述 statement_id varchar2(30) 用户输入的查询标签。 plan_id bigint 查询标识。 id int 查询生成的计划中的每一个执行算子的编号。 operation varchar2(30) 计划中算子的操作描述。 options varchar2(255) 操作选项。 object_name name 操作对应的对象名,非查询中使用到的对象别名。来自于用户定义。 object_type varchar2(30) 对象类型。 object_owner name 对象所属schema,来自于用户定义。 projection varchar2(4000) 操作输出的列信息。 object_type取值范围为PG_CLASS中定义的relkind类型(TABLE普通表,INDEX索引,SEQUENCE序列,VIEW视图,FOREIGN TABLE外表,COMPOSITE TYPE复合类型,TOASTVALUE TOAST表)和计划使用到的rtekind(SUBQUERY, JOIN, FUNCTION, VALUES, CTE, REMOTE_QUERY)。 object_owner对于RTE来说是计划中使用的对象描述,非用户定义的类型不存在object_owner。 statement_id、object_name、object_owner、projection字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 支持用户对PLAN_TABLE进行SELECT和DELETE操作,不支持其它DML操作。 父主题: 系统视图
  • GLOBAL_WORKLOAD_SQL_COUNT GLOBAL_WORKLOAD_SQL_COUNT视图显示集群中所有Workload控制组内SQL语句执行次数的统计信息,包括SELECT、UPDATE、INSERT、DELETE语句的执行次数统计,以及DDL、DML、DCL类型语句的执行次数统计。 表1 GLOBAL_WORKLOAD_SQL_COUNT字段 名称 类型 描述 workload name Workload控制组名称。 select_count bigint SELECT数量。 update_count bigint UPDATE数量。 insert_count bigint INSERT数量。 delete_count bigint DELETE数量。 ddl_count bigint DDL数量。 dml_count bigint DML数量。 dcl_count bigint DCL数量。 父主题: 系统视图
  • gds_debug_mod 参数说明:为了增强对Gauss Data Service (以下简称GDS)相关问题的分析定位能力,可以通过此参数选择是否开启GDS的debug功能。参数开启后,将在集群节点对应的日志中输出GDS每次收发的包裹类型、命令交互的对端以及其他交互相关的细节信息,方便记录Gaussdb端状态机的状态跳转,以及目前所处的状态信息。此参数打开会输出额外日志,增加日志IO开销,进而影响性能和日志的信息有效性,因此请仅在定位GDS问题时开启。 参数类型:USERSET 取值范围:布尔型 on表示开启GDS debug功能。 off表示不开启GDS debug功能。 默认值:off
  • partition_mem_batch 参数说明:为了优化对列存分区表的批量插入,在批量插入过程中会对数据进行缓存后再批量写盘。在partition_max_cache_size设置的情况下,通过partition_mem_batch可指定缓存个数。该参数值设置越大,每个分区可用的缓存越小,降低列存分区表批量插入性能;设置越小,每个分区可用的缓存会越大,会消耗较多系统内存资源。 参数类型:USERSET 取值范围:1~ 65535 默认值:256
  • raise_errors_if_no_files 参数说明:导入时是否区分“导入文件记录数为空”和“导入文件不存在”。raise_errors_if_no_files=TRUE,则“导入文件不存在”的时候,GaussDB(DWS)将抛出“文件不存在的”错误。 参数类型:SUSET 取值范围:布尔型 on表示导入时区分“导入文件记录数为空”和“导入文件不存在”。 off表示导入时不区分“导入文件记录数为空”和“导入文件不存在”。 默认值:off
  • GS_COLUMN_TABLE_IO_STAT GS_COLUMN_TABLE_IO_STAT视图显示当前数据库中所有列存表在当前节点上的IO情况。各统计字段为实例启动以来的累计值。 表1 GS_COLUMN_TABLE_IO_STAT字段 名称 类型 描述 schemaname name 表的命名空间。 relname name 表的名称。 heap_read bigint 堆逻辑读块数。 heap_hit bigint 堆命中块数。 idx_read bigint 索引逻辑读块数。 idx_hit bigint 索引命中块数。 cu_read bigint Compression Unit逻辑读个数。 cu_hit bigint Compression Unit命中个数。 cidx_read bigint Compression Unit Index逻辑读个数。 cidx_hit bigint Compression Unit Index命中个数。 父主题: 系统视图
  • 约束说明 创建一个新job后,该job从属于当前coordinator(即:该job仅在当前coordinator上调度和执行),其他coordinator不会调度和执行该job。所有coordinator都可以查看、修改、删除其他CN创建的job。 job只能通过dbms_job高级包提供的接口进行创建、更新、删除操作,因为高级包的接口中会考虑所有CN间job信息的同步和pg_jobs表主键的关联操作,如果通过DML语句对pg_jobs表进行增删改,会导致job信息在CN间不一致和系统表无法关联变更的混乱问题,会严重影响job内部的管理。 由于用户创建的每个任务和CN绑定,若不开启CN故障自动迁移功能,当任务运行过程中,该CN故障,则该任务的状态无法实时刷新。如果在任务未执行时CN故障,则该CN上的任务都得不到正常的调度和执行。建议开启CN故障自动迁移功能,故障CN上的作业会迁移至其他CN继续调度。 job在定时执行过程中,需要在当前job所属的CN上实时更新该job的运行状态、最近执行开始时间、最近执行结束时间、下次开始时间、失败次数(如果job执行失败)等相关参数信息到pg_jobs系统表中,并同步到其他CN,保证job信息的一致性。如果其他CN存在节点故障,那么job所属CN会同步超时重发的处理,导致job执行时间变长,但CN间同步超时失败后,原CN上pg_jobs表中job的相关信息仍然能正常更新,且job能正常执行成功。当故障CN恢复正常后,可能出现该CN上pg_jobs表中当前job的执行时间、运行状态等参数与原CN上不一致的情况,需要原CN上再次执行该job后才能保证job信息的同步。 对于并发同时有多个job到达执行时间的场景,由于会为每个job创建一个线程来执行job,由于系统内部启动每个线程的时间会有延迟,因此会导致同时并发执行的job的开始时间有延迟,每个job的延迟时间在0.1ms左右。 job中待执行SQL语句有长度限制,最长为8K。
  • 接口介绍 高级功能包DBMS_JOB支持的所有接口请参见表1。 表1 DBMS_JOB 接口名称 描述 DBMS_JOB.SUBMIT 提交一个定时任务。作业号由系统自动生成。 DBMS_JOB.SUBMIT_NODE 提交一个定时任务。执行节点由用户指定,作业号由系统自动生成。 DBMS_JOB.ISUBMIT 提交一个定时任务。作业号由用户指定。 DBMS_JOB.REMOVE 通过作业号来删除定时任务。 DBMS_JOB.BROKEN 禁用或者启用定时任务。 DBMS_JOB.CHANGE 修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 DBMS_JOB.WHAT 修改定时任务的任务内容属性。 DBMS_JOB.NEXT_DATE 修改定时任务的下次执行时间属性。 DBMS_JOB.INTERVAL 修改定时任务的执行间隔属性。 DBMS_JOB.CHANGE_OWNER 修改定时任务的属主。 DBMS_JOB.CHANGE_NODE 修改定时任务的执行节点。 DBMS_JOB.SUBMIT 存储过程SUBMIT提交一个系统提供的定时任务。 DBMS_JOB.SUBMIT函数原型为: 1 2 3 4 5 DMBS_JOB.SUBMIT( what IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, job_interval IN TEXT DEFAULT 'null', job OUT INTEGER); 当创建一个定时任务(DBMS_JOB)时,系统默认将当前数据库和用户名与当前创建的定时任务(DBMS_JOB)绑定起来。该接口函数可以通过call或select调用,如果通过select调用,可以不填写出参。如果在存储过程中则需要用通过perform调用该接口函数。 表2 DBMS_JOB.SUBMIT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 what text IN 否 要执行的SQL语句。支持一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。 next_date timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval text IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 job integer OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit时,该参数可以省略。 示例: 1 2 3 4 5 select DBMS_JOB.SUBMIT('call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1'); select DBMS_JOB.SUBMIT('call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); CALL DBMS_JOB.SUBMIT('INSERT INTO T_JOB VALUES(1); call pro_1(); call pro_2();', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)' ,:jobid); DBMS_JOB.SUBMIT_NODE 存储过程SUBMIT提交一个系统提供的定时任务。执行节点由用户指定。该接口仅8.3.0及以上集群版本支持。 DBMS_JOB.SUBMIT_NODE函数原型为: 1 2 3 4 5 6 DMBS_JOB.SUBMIT_NODE( what IN TEXT, next_date IN TIMESTAMP DEFAULT sysdate, job_interval IN TEXT DEFAULT 'null', job_node IN TEXT DEFAULT NULL, job OUT INTEGER); 表3 DBMS_JOB.SUBMIT_NODE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 what text IN 否 要执行的SQL语句。支持一个或多个DML、匿名块、调用存储过程的语句或3种混合的场景。 next_date timestamp IN 否 下次作业运行时间。默认值为当前系统时间(sysdate)。如果是过去时间,在提交作业时表示立即执行。 interval text IN 是 用来计算下次作业运行时间的时间表达式,可以是interval表达式,也可以是sysdate加上一个numeric值(例如:sysdate+1.0/24)。如果为空值或字符串"null"则表示只执行一次,执行后JOB状态STATUS变成'd'则不再执行。 node text IN 是 作业执行节点名称。 job integer OUT 否 作业号。范围为1~32767。当使用select调用dbms.submit时,该参数可以省略。 示例: 1 2 3 4 5 select DBMS_JOB.SUBMIT_NODE('call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1','coordinator1'); select DBMS_JOB.SUBMIT_NODE('call pro_xxx();', to_date('20180101','yyyymmdd'),'sysdate+1.0/24'); CALL DBMS_JOB.SUBMIT('INSERT INTO T_JOB VALUES(1); call pro_1(); call pro_2();', add_months(to_date('201701','yyyymm'),1), 'date_trunc(''day'',SYSDATE) + 1 +(8*60+30.0)/(24*60)', 'coordinator1', :jobid); DBMS_JOB.ISUBMIT ISUBMIT与SUBMIT语法功能相同,但其第一个参数是入参,即指定的作业号,SUBMIT最后一个参数是出参,表示系统自动生成的作业号。 示例: 1 CALL dbms_job.isubmit(101, 'insert_msg_statistic1;', sysdate, 'sysdate+3.0/24'); DBMS_JOB.REMOVE 存储过程REMOVE删除指定的定时任务。 DBMS_JOB.REMOVE函数原型为: 1 REMOVE(job IN INTEGER); 表4 DBMS_JOB.REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 job integer IN 否 指定的作业号。 示例: CALL dbms_job.remove(101); DBMS_JOB.BROKEN 存储过程BROKEN禁用或者启用定时任务。 DBMS_JOB.BROKEN函数原型为: 1 2 3 4 DMBS_JOB.BROKEN( job IN INTEGER, broken IN BOOLEAN, next_date IN TIMESTAMP DEFAULT sysdate); 表5 DBMS_JOB.BROKEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 job integer IN 否 指定的作业号。 broken boolean IN 否 状态标志位,true代表禁用,false代表启用。具体true或false值更新当前job;如果为空值,则不改变原有job的状态。 next_date timestamp IN 是 下次运行时间,默认为当前系统时间。如果参数broken状态为true,则更新该参数为'4000-1-1';如果参数broken状态为false,且如果参数next_date不为空值,则更新指定job的next_date值,如果next_date为空值,则不更新next_date值。该参数可以省略,为默认值。 示例: 1 2 CALL dbms_job.broken(101, true); CALL dbms_job.broken(101, false, sysdate); DBMS_JOB.CHANGE 存储过程CHANGE修改定时任务的属性,包括任务内容、下次执行时间、执行间隔。 DBMS_JOB.CHANGE函数原型为: 1 2 3 4 5 DMBS_JOB.CHANGE( job IN INTEGER, what IN TEXT, next_date IN TIMESTAMP, interval IN TEXT); 表6 DBMS_JOB.CHANGE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 job integer IN 否 指定的作业号。 what text IN 是 执行的存储过程名或者sql语句块。如果该参数为空值,则不更新指定job的what值,否则更新指定job的what值。 next_date timestamp IN 是 下次运行时间。如果该参数为空值,则不更新指定job的next_date值,否则更新指定job的next_date值。 interval text IN 是 用来计算下次作业运行时间的时间表达式。如果该参数为空值,则不更新指定job的interval值;如果该参数不为空值,会校验interval是否为有效的时间类型或interval类型,则更新指定job的interval值。如果为字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。 示例: 1 2 CALL dbms_job.change(101, 'call userproc();', sysdate, 'sysdate + 1.0/1440'); CALL dbms_job.change(101, 'insert into tbl_a values(sysdate);', sysdate, 'sysdate + 1.0/1440'); DBMS_JOB.WHAT 存储过程WHAT修改定时任务的任务内容属性。 DBMS_JOB.WHAT函数原型为: 1 2 3 DMBS_JOB.WHAT( job IN INTEGER, what IN TEXT); 表7 DBMS_JOB.WHAT接口参数说明 参数 类型 入参/出参 是否可以为空 描述 job integer IN 否 指定的作业号。 what text IN 否 执行的存储过程调用或者sql语句块。 当what参数是一个或多个可以执行成功的sql语句/程序块/调用存储过程时,该接口函数才能被执行成功,否则会执行失败。 若what参数为一个简单的insert、update等语句,需要在表前加模式名。 示例: 1 2 CALL dbms_job.what(101, 'call userproc();'); CALL dbms_job.what(101, 'insert into tbl_a values(sysdate);'); DBMS_JOB.NEXT_DATE 存储过程NEXT_DATE修改定时任务的下次执行时间属性。 DBMS_JOB.NEXT_DATE函数原型为: 1 2 3 DMBS_JOB.NEXT_DATE( job IN INTEGER, next_date IN TIMESTAMP); 表8 DBMS_JOB.NEXT_DATE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 job integer IN 否 指定的作业号。 next_date timestamp IN 否 下次运行时间。 如果输入的next_date的值小于当前日期值,该job会立即执行一次。 示例: 1 CALL dbms_job.next_date(101, sysdate); DBMS_JOB.INTERVAL 存储过程INTERVAL修改定时任务的执行间隔属性。 DBMS_JOB.INTERVAL函数原型为: 1 2 3 DMBS_JOB.INTERVAL( job IN INTEGER, interval IN TEXT); 表9 DBMS_JOB.INTERVAL接口参数说明 参数 类型 入参/出参 是否可以为空 描述 job integer IN 否 指定的作业号。 interval text IN 是 用来计算下次作业运行时间的时间表达式。如果为空值或字符串"null"表示只执行一次,执行后JOB状态STATUS变成'd' 不再执行。interval是否为有效的时间类型或interval类型。 示例: 1 CALL dbms_job.interval(101, 'sysdate + 1.0/1440'); 对于指定job正在运行状态(即job_status为'r')时,不允许通过remove、change、next_date、what、interval等接口删除或修改job的参数信息。
  • 系统表和系统视图概述 系统表是GaussDB(DWS)存放结构元数据,是GaussDB(DWS)数据库系统运行控制信息的来源,也是数据库系统的核心组成部分。系统表包含集群安装信息以及GaussDB(DWS)上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。 系统视图提供了查询系统表和访问数据库内部状态的方法。当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图来解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。 三权分立下,非管理员无权查看系统表和视图。非三权分立下,系统表和系统视图要么只对管理员可见,要么对所有用户可见。下面的系统表和视图有些标识了需要管理员权限,这些系统表和视图只有管理员可以查询。 禁止对系统表或系统视图进行增删改等操作,手动对系统表或系统视图的修改或破坏可能会导致系统信息不一致,造成系统控制异常甚至出现集群不可用的情况。 系统表不支持toast,无法跨页存储,一个页面大小为8K,系统表各个字段长度需小于8K。 父主题: 系统表和系统视图
  • GS_CLUSTER_RESOURCE_INFO GS_CLUSTER_RESOURCE_INFO视图显示的是所有DN资源的汇总信息。 表1 GS_CLUSTER_RESOURCE_INFO字段 名称 类型 描述 min_mem_util integer DN最小内存使用率。 max_mem_util integer DN最大内存使用率。 min_cpu_util integer DN最小CPU使用率。 max_cpu_util integer DN最大CPU使用率。 min_io_util integer DN最小IO使用率。 max_io_util integer DN最大IO使用率。 used_mem_rate integer 物理节点最大内存使用率。 父主题: 系统视图
  • 创建Hudi任务 迁移场景 如果GaussDB(DWS)表已经通过CDL导入数据,改为用SQL on Hudi方式迁移数据。或者是用CDM做全量初始化后,继续使用SQL on Hudi方式同步增量数据。 1. 创建hudi.hudi_sync_state同步状态表,需要管理员权限。 1 SELECT pg_catalog.create_hudi_sync_table(); 通常情况下,每个数据库中只创建一次hudi.hudi_sync_state。 2. 设置CDL的同步进度,用户需要有同步目标表的insert和update权限、HUDI外表的select权限,否则无法正常设置同步进度。 1 SELECT hudi_set_sync_commit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE', 'LATEST_COMMIT'); 其中: SCHEMA.TABLE表示同步数据的目标表名,带schema。 SCHEMA.FOREIGN_TABLE表示OBS外表命名,带schema。 LATEST_COMMIT表示已同步的Hudi数据时间截点。 示例: 目标表public.in_rel,已经同步hudi的数据到20220913152131,切换到SQL on Hudi方式从OBS外表hudi_read1中继续导出数据。 1 SELECT hudi_set_sync_commit('public.in_rel', 'public.hudi_read1', '20220913152131'); 3. 提交Hudi同步任务。 1 SELECT hudi_sync_task_submit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE'); 例如: 目标表public.in_rel,切换到SQL on Hudi方式从OBS外表hudi_read1中继续导出数据。 1 SELECT hudi_sync_task_submit('public.in_rel', 'public.hudi_read1'); 新建场景 DWS表为空,第一次从Hudi同步数据,可执行以下命令直接创建任务。 1 SELECT hudi_sync_task_submit('SCHEMA.TABLE', 'SCHEMA.FOREIGN_TABLE');
  • PG_PREPARED_STATEMENTS PG_PREPARED_STATEMENTS视图显示当前会话所有可用的预备语句。 表1 PG_PREPARED_STATEMENTS字段 名称 类型 描述 name text 预备语句的标识符。 statement text 创建该预备语句的查询字符串。对于从SQL创建的预备语句而言是客户端提交的PREPARE语句;对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。 prepare_time timestamp with time zone 创建该预备语句的时间戳。 parameter_types regtype[] 该预备语句期望的参数类型,以regtype类型的数组格式出现。与该数组元素相对应的OID可以通过把regtype转换为oid值得到。 from_sql boolean 如果该预备语句是通过PREPARE语句创建的则为true。 如果是通过前/后端协议创建的则为false。 父主题: 系统视图
  • qrw_inlist2join_optmode 参数说明:控制是否使用inlist-to-join查询重写。 参数类型:USERSET 取值范围:字符串 disable:关闭inlist2join查询重写。 cost_base:基于代价的inlist2join查询重写。 rule_base:基于规则的inlist2join查询重写,即强制使用inlist2join查询重写。 任意正整数:inlist2join查询重写阈值,即list内元素个数大于该阈值,进行inlist2join查询重写。 默认值:cost_base
  • setop_optmode 参数说明:控制不带ALL选项的集合操作(UNION/EXCEPT/INTERSECT)语句的各个查询分支语句是否执行去重操作。该参数仅8.2.0及以上集群版本支持。 参数类型:USERSET 取值范围:枚举型 disable:查询分支不执行去重操作。 force:强制查询分支执行去重操作。 cost:优化器在查询分支去重和不去重这两种执行方式中,选择代价比较小的执行方式。 默认值:disable 此参数配置仅在SQL语句的执行计划满足以下条件时生效: SQL语句中的UNION/EXCEPT/INTERSECT操作不带ALL选项。 执行集合操作的各个查询分支在进行集合操作前执行过数据重分布动作。
  • enable_value_redistribute 参数说明:控制是否开启生成value redistribute优化计划,8.2.0及以上集群版本中,该参数针对不带Partition by子句的rank、dense_rank、row_number是否生成value redistribute优化计划生效。 参数类型:USERSET 取值范围:布尔型 on表示支持使用value redistribute生成优化计划。 off表示不支持使用value redistribute生成优化计划。 默认值:on
  • best_agg_plan 参数说明:对于stream下的Agg操作,优化器会生成三种计划: hashagg+gather(redistribute)+hashagg。 redistribute+hashagg(+gather)。 hashagg+redistribute+hashagg(+gather)。 本参数用于控制优化器生成哪种hashagg的计划。 参数类型:USERSET 取值范围:0,1,2,3 取值为1时,强制生成第一种计划。 取值为2时,如果group by列可以重分布,强制生成第二种计划,否则生成第一种计划。 取值为3时,如果group by列可以重分布,强制生成第三种计划,否则生成第一种计划。 取值为0时,优化器会根据以上三种计划的估算cost选择最优的一种计划生成。 默认值:0
  • volatile_shipping_version 参数说明:控制volatile函数下推执行的范围。该参数仅8.2.0及以上集群版本支持。 参数类型:USERSET 取值范围:0,1,2,3 取值为3时,在2的基础上,扩展支持InlineCTE在只被引用一次时支持下推。该取值仅8.2.1.105及以上集群版本支持。 取值为2时,在1的基础上,扩展支持在复制CTE结果的目标列中包含volatile函数时的下推。 取值为1时,扩展支持nextval、uuid_generate_v1、sys_guid、uuid函数出现在语句目标列时的完全下推。 取值为0时,支持random类函数的完全下推,nextval、uuid_generate_v1函数仅在INSERT含有简单查询语句的部分下推。 默认值:3
  • expected_computing_nodegroup 参数说明:标识选定的计算Node Group模式或目标计算Node Group。Node Group目前为内部用机制,用户无需设置。 共4种计算Node Group模式,用于关联操作和聚集操作时选定计算Node Group。在每一种模式中,优化器有针对性地选定几个候选计算Node Group,然后根据代价,从中为当前算子挑选更合适的计算Node Group。 参数类型:USERSET 取值范围:字符串 optimal:候选计算Node Group列表包含算子操作对象所在的Node Group和由当前用户具有COMPUTE权限的所有Node Group包含的所有DN构成的Node Group。 query:候选计算Node Group列表包含算子操作对象所在的Node Group和由当前查询涉及的所有基表所在Node Group包含的所有DN构成的Node Group。 bind:当前session用户是逻辑集群用户时,候选计算Node Group为当前用户关联的逻辑集群的Node Group;当session用户不是逻辑集群用户时,候选计算Node Group选取规则和参数设置为query时的规则一致。 Node Group名: enable_nodegroup_debug为off时:候选计算Node Group列表包含算子操作对象所在的Node Group和该指定的Node Group。 enable_nodegroup_debug为on时:候选计算Node Group为指定的Node Group。 默认值:bind
  • enable_nodegroup_debug 参数说明:控制优化器在多Node Group环境下,是否使用强制弹性计算。Node Group目前为内部用机制,用户无需设置。 该参数只在expected_computing_nodegroup被设置为具体Node Group时生效。 参数类型:USERSET 取值范围:布尔型 on表示强制将计算弹性到expected_computing_nodegroup所指定的Node Group进行计算。 off表示不强制使用某个Node Group进行计算。 默认值:off
  • enable_mixedagg 参数说明:控制优化器对Mixed Agg聚集规划类型的使用。(该参数仅8.2.0及以上集群版本支持) 参数类型:USERSET 取值范围:布尔型 on表示使用,为符合条件的Grouping Sets语句(包括Rollup或Cube)生成Mixed Agg查询计划。 off表示不使用。 默认值:off 通常在大数量场景(单个DN表的数据量在100GB以上),采用Mixed Agg查询计划可以提升语句的执行性能。 不支持Mixed Agg的场景如下: GROUP BY子句里列的数据类型不支持哈希操作。 聚集函数中包含DISTINCT去重或ORDER BY排序。 使用GROUPING SETS子句时不包含空的分组。
  • max_opt_sort_rows 参数说明:控制order by子句中最大优化的limit+offset行数。该参数仅8.3.0及以上集群版本支持。 参数类型:USERSET 取值范围:整型,0~INT_MAX 取值为0时:表示参数不生效。 取值为其他值时:表示order by子句中limit+offset行数小于该值时,优化生效,大于该值时,优化不生效。优化后耗时减小,但内存消耗可能增大。 默认值:0
  • enable_hashfilter_test 参数说明:该参数用于控制是否为基表扫描增加分布列的hashfilter,以便确认结果是否符合预期。同时,在数据插入时,控制是否进行DN准确性校验(即校验当前数据是否应该插入当前DN)。该参数仅8.2.1.300及以上集群版本支持。 参数类型:USERSET 取值范围:布尔型 off:不为基表扫描添加分布列的hashfilter并在数据插入时不进行DN准确性校验。 on:为基表扫描添加分布列的hashfilter,并在数据插入时进行DN准确性校验。 默认值:on 此参数仅对hash分布的表有效。 当该参数设置为on后,因在数据插入时会进行DN准确性校验,会影响数据插入性能。
  • 开发设计建议概述 本开发设计建议约定数据库建模和数据库应用程序开发过程中,应当遵守的设计规范。依据这些规范进行建模,能够更好的契合GaussDB(DWS)的分布式处理架构,输出更高效的业务SQL代码。 本开发设计建议中所陈述的“建议”和“关注”含义如下: 建议:用户应当遵守的设计规则。遵守这些规则,能够保证业务的高效运行;违反这些规则,将导致业务性能的大幅下降或某些业务逻辑错误。 关注:在业务开发过程中客户需要注意的细则。用于标识容易导致客户理解错误的知识点(实际上遵守SQL标准的SQL行为),或者程序中潜在的客户不易感知的默认行为。 父主题: 开发设计建议
  • PG_STAT_SYS_TABLES PG_STAT_SYS_TABLES视图显示pg_catalog、information_schema模式的所有命名空间中系统表的统计信息。 表1 PG_STAT_SYS_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 表的模式名。 relname name 表名。 seq_scan bigint 在此表上表启动的顺序扫描的次数。 seq_tup_read bigint 顺序扫描抓取的有live数据行的数目。 idx_scan bigint 索引扫描的次数。 idx_tup_fetch bigint 索引扫描抓取的有live数据行的数目。 n_tup_ins bigint 插入的行数。 n_tup_upd bigint 更新的行数。 n_tup_del bigint 删除的行数。 n_tup_hot_upd bigint 热更新的行数(即不需要单独的索引更新)。 n_live_tup bigint live行估计数。 n_dead_tup bigint dead行估计数。 last_vacuum timestamp with time zone 最后一次手动vacuum时间(不计算VACUUM FULL)。 last_autovacuum timestamp with time zone 最后一次autovacuum时间。 last_analyze timestamp with time zone 最后一次analyze时间。 last_autoanalyze timestamp with time zone 最后一次autoanalyze时间。 vacuum_count bigint vacuum的次数(不计算VACUUM FULL)。 autovacuum_count bigint autovacuum的次数。 analyze_count bigint analyze的次数。 autoanalyze_count bigint autoanalyze的次数。 父主题: 系统视图
  • javax.naming.Context javax.naming.Context是连接配置的上下文接口。 表1 对javax.naming.Context的支持情况 方法名 返回值类型 支持JDBC 4 bind(Name name, Object obj) void Yes bind(String name, Object obj) void Yes lookup(Name name) Object Yes lookup(String name) Object Yes rebind(Name name, Object obj) void Yes rebind(String name, Object obj) void Yes rename(Name oldName, Name newName) void Yes rename(String oldName, String newName) void Yes unbind(Name name) void Yes unbind(String name) void Yes 父主题: JDBC接口参考
  • java.sql.ResultSetMetaData java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。 表1 对java.sql.ResultSetMetaData的支持情况 方法名 返回值类型 支持JDBC 4 getColumnCount() int Yes getColumnName(int column) String Yes getColumnType(int column) int Yes getColumnTypeName(int column) String Yes 父主题: JDBC接口参考
  • SEQUENCE和NOCACHE 输入:CREATE SEQUENCE,使用NOCACHE 1 2 3 4 5 CREATE SEQUENCE customers_seq START WITH 1000 INCREMENT BY 1 NOCACHE NOCYCLE; 输出 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 INSERT INTO PUBLIC.MIG_SEQ_TABLE ( SCHEMA_NAME ,SEQUENCE_NAME ,START_WITH ,INCREMENT_BY ,MIN_VALUE ,MAX_VALUE ,CYCLE_I ,CACHE ,ORDER_I ) VALUES ( UPPER( current_schema ( ) ) ,UPPER( 'customers_seq' ) ,1000 ,1 ,1 ,999999999999999999999999999 ,FALSE ,20 ,FALSE ) ;
  • STATS_PERSISTENT 在MySQL中,STATS_PERSISTENT指定是否为InnoDB表启动持久性统计信息,通过CREATE TABLE或ALTER TABLE语句启动持久性统计信息。DSC迁移时会将该属性删除。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE `public`.`runoob_alter_test`( `dataType1` int NOT NULL AUTO_INCREMENT, `dataType2` DOUBLE(20,8), `dataType3` TEXT NOT NULL, PRIMARY KEY(`dataType1`) ) ENGINE=InnoDB, STATS_PERSISTENT=0; ## A. ALTER TABLE runoob_alter_test STATS_PERSISTENT DEFAULT; ALTER TABLE runoob_alter_test STATS_PERSISTENT=DEFAULT; ## B. ALTER TABLE runoob_alter_test STATS_PERSISTENT 0; ALTER TABLE runoob_alter_test STATS_PERSISTENT=0; ## C. ALTER TABLE runoob_alter_test STATS_PERSISTENT 1; ALTER TABLE runoob_alter_test STATS_PERSISTENT=1; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE "public"."runoob_alter_test" ( "datatype1" SERIAL NOT NULL, "datatype2" DOUBLE PRECISION, "datatype3" TEXT NOT NULL, PRIMARY KEY ("datatype1") ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype1"); -- A. -- B. -- C. 父主题: 表(可选参数、操作)
  • PG_EXT_STATS PG_EXT_STATS视图提供对存储在PG_STATISTIC_EXT表里面的扩展统计信息的访问。扩展统计信息目前包括多列统计信息。 表1 PG_EXT_STATS字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 包含表的模式名。 tablename name PG_CLASS.relname 表名。 attname int2vector PG_STATISTIC_EXT.stakey 统计信息扩展的多列信息。 inherited boolean - 如果为真,则包含继承的子列,否则只是指定表的字段。 null_frac real - 记录中字段组合为空的百分比。 avg_width integer - 字段组合记录以字节记的平均宽度。 n_distinct real - 如果大于0,表示字段组合中独立数值的估计数目。 如果小于0,表示独立数值的数目被行数除的负数。 如果等于0,表示独立数值的数目未知。 说明: 用负数形式是因为ANALYZE认为独立数值的数目是随着表增长而增长; 正数的形式用于在字段看上去好像有固定的可能值数目的情况下。比如,-1表示一个字段组合中独立数值的个数和行数相同。 n_dndistinct real - 标识dn1上字段组合中非NULL数据的唯一值的数目。 如果大于0,表示独立数值的实际数目。 如果小于0,表示独立数值的数目被行数除的负数。(比如,一个字段组合的数值平均出现概率为两次,则可以表示为n_dndistinct=-0.5)。 如果等于0,表示独立数值的数目未知。 most_common_vals anyarray - 一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值均不为NULL。 most_common_freqs real[] - 一个最常用数值组合的频率的列表,即每个出现的次数除以行数。如果most_common_vals是NULL,则为NULL。 most_common_vals_null anyarray - 一个字段组合里最常用数值的列表。如果该字段组合不存在最常用数值,则为NULL。本列保存的多列常用数值中至少有一个值为NULL。 most_common_freqs_null real[] - 一个最常用数值组合的频率的列表,即每个出现的次数除以行数。如果most_common_vals_null是NULL,则为NULL。 父主题: 系统视图
  • 加载驱动 在创建数据库连接之前,需要先加载数据库驱动程序。 加载驱动有两种方法: 在代码中创建连接之前任意位置隐含装载:Class.forName("org.postgresql.Driver"); 在JVM启动时参数传递:java -Djdbc.drivers=org.postgresql.Driver jdbctest 上述jdbctest为测试用例程序的名称。 当使用gsjdbc200.jar时,上面的Driver类名相应修改为"com.huawei.gauss200.jdbc.Driver" 父主题: 基于JDBC开发
共100000条