华为云用户手册

  • current_schema 参数说明:设置当前的模式。 参数类型:字符串 参数单位:无 取值范围:由一个或多个模式名构成的字符串,不同的模式名用逗号隔开。 默认值:'"$user",public' $user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • default_tablespace 参数说明:当CREATE命令没有明确声明表空间时,所创建对象(表和索引等)的缺省表空间。 值是一个表空间的名称或者一个表示使用当前数据库缺省表空间的空字符串。若指定的是一个非默认表空间,用户必须具有它的CREATE权限,否则尝试创建会失败。 临时表不使用此参数,可以用temp_tablespaces代替。 创建数据库时不使用此参数。默认情况下,一个新的数据库从模板数据库继承表空间配置。 参数类型:字符串 参数单位:无 取值范围:已有表空间的名称或空字符串,其中空字符串表示使用默认表空间。 默认值:"" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • default_storage_nodegroup 参数说明:设置当前默认建表所在的Node Group,目前只适用普通表。 参数类型:字符串 参数单位:无 取值范围:已有Node Group的名称或“installation”。 默认值:"installation" 值为“installation”表示建表会默认建在安装的Node Group上。 值为其他字符串表示建表会默认建在设置的Node Group上。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • search_path 参数说明:当一个被引用对象没有指定模式时,此参数设置模式搜索顺序。 参数类型:字符串 参数单位:无 取值范围:由一个或多个模式名构成的字符串,不同的模式名用逗号隔开。 设置为'"$user",public'时,支持共享数据库(没有用户具有私有模式和所有共享使用public),用户私有模式和这些功能的组合使用。可以通过改变默认搜索路径来获得其他效果,无论是全局化的还是私有化的。 设置为空字符串('')的时候,系统会自动转换成一对双引号。 设置的内容中包含双引号时,系统会认为是不安全字符,会将每个双引号转换成一对双引号。 默认值:'"$user",public' $user表示与当前会话用户名同名的模式名,如果这样的模式不存在,$user将被忽略。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议: 当前会话存放临时表的模式时,可以使用别名pg_temp将它列在搜索路径中,如'pg_temp,public'。存放临时表的模式始终会作为第一个被搜索的对象,排在pg_catalog和search_path中所有模式的前面,即具有第一搜索优先级。建议用户不要在search_path中显式设置pg_temp。如果在search_path中指定了pg_temp,但不是在最前面,系统会提示设置无效,pg_temp仍被优先搜索。通过使用别名pg_temp,系统只会在存放临时表的模式中搜索表、视图和数据类型这样的数据库对象,不会在里面搜索函数或运算符这样的数据库对象。 系统表所在的模式pg_catalog,总是排在search_path中指定的所有模式前面被搜索,即具有第二搜索优先级(pg_temp具有第一搜索优先级)。建议用户不要在search_path中显式设置pg_catalog。如果在search_path中指定了pg_catalog,但不是在最前面,系统会提示设置无效,pg_catalog仍被第二优先搜索。 当没有指定一个特定模式而创建一个对象时,它们被放置到以search_path为命名的第一个有效模式中。当搜索路径为空时,会报错误。 可以通过SQL函数current_schema()检测当前搜索路径的有效值。这和search_path的值不完全相同,因为current_schema()显示search_path中首位有效的模式名称。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • ai_watchdog_oom_other_used_memory_threshold 参数说明:预期的数据库的其他部分内存使用上限。 参数类型:整型 参数单位:MB 取值范围:-1 ~ 1048576 默认值:分为以下2种情况: 如果该参数是通过OM安装进行设置,其默认值为-1; 当参数值为-1时,对其他部分内存使用上限按照如下规则判断是否发生泄露: 若max_process_memory小于300GB,则其他部分内存使用上限为20GB; 若max_process_memory大于等于300GB小于600GB,则其他部分内存使用上限为40GB; 若max_process_memory大于等于600GB,则其他部分内存使用上限为60GB。 若用户未采用默认值-1,则其他部分内存使用上限将采用用户设置的参数。 如果该参数不通过OM安装进行设置,其默认值为20480。 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小,会导致频繁报警;设置过大,会导致无法及时发现异常。
  • ai_watchdog_oom_malloc_failures 参数说明:容忍的最大连续内存分配失败数量,超过该数量可能会触发OOM探测功能。 参数类型:整型 参数单位:个 取值范围:1 ~ 32000 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小,会导致频繁报警;设置过大,会导致无法及时发现异常。
  • ai_watchdog_tolerance_times 参数说明:AI Watchdog启动自愈前最多能容忍多少次连续异常事件,通过该参数可以避免错误操作。 参数类型:整型 参数单位:次 取值范围:0 ~ 100 默认值:4 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • ai_watchdog_wait_time 参数说明:为了避免数据库频繁进行自愈操作,会在数据库启动后一段时间进行等待,该值即用来调整等待时间。 参数类型:整型 参数单位:秒(s) 取值范围:0 ~ 36000 默认值:1800 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。取值不能带单位。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过小,可能会导致数据库刚启动时误报;设置过大,可能会导致无法发现等待时间内的异常。
  • ai_watchdog_oom_process_threshold 参数说明:预期的数据库进程使用占max_process_memory的使用比例,到达该阈值时,会触发内存泄漏判断。 参数类型:浮点型 参数单位:无 取值范围:0 ~ 10 默认值:分为以下2种情况: 如果该参数是通过OM安装进行设置,其默认值为1; 如果该参数不通过OM安装进行设置,其默认值为1.1。 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • ai_watchdog_warning_retention 参数说明:AI Watchdog在dbe_perf.ai_watchdog_detection_warnings视图中保留的告警记录数上限。 参数类型:整型 参数单位:个 取值范围:0 ~ 32000 默认值:20 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • ai_watchdog_max_cpu_usage 参数说明:预期的数据库CPU使用率上限,该值会根据多核情况进行归一化。该参数值设置为0时,表示不判断CPU使用率情况。 参数类型:浮点型 参数单位:无 取值范围:0 ~ 1 默认值:0.8 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:设置过大,可能会导致无法及时发现异常。
  • ai_watchdog_rto_restriction_time 参数说明:AI Watchdog自愈功能的RTO限制,超过该RTO阈值,则不进行自愈操作。 参数类型:整型 参数单位:秒(s) 取值范围:0 ~ 36000 默认值:600 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。取值不能带单位。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • multi_stats_type 参数说明:该参数用于指定在enable_ai_stats为on状态下创建的统计信息类别。 参数类型:枚举类型 参数单位:无 取值范围:有效值为“BAYESNET”、“MCV”、“ALL”。 "BAYESNET":只创建智能统计信息。 "MCV":只创建传统统计信息。 "ALL":同时创建传统统计信息和智能统计信息。 默认值:"BAYESNET" 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • enable_ai_watchdog_forcible_oom_detection 参数说明:强制开启或关闭AI Watchdog的OOM探测功能,若关闭该参数,则会自动根据当前数据库的规格判断是否需要启动OOM探测功能。自动判断模式下,对于max_process_memory设置为64GB及以上的场景,才会启动OOM探测功能。由于OOM探测功能依赖内存管理模块获取的信息,因此,如果内存管理模块未开启或失效,则OOM探测功能也不会启用。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启。 off:表示关闭。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:功能打开会占用系统资源。
  • enable_ai_stats 参数说明:该参数用于指定是否创建或者使用智能统计信息。 参数类型:布尔型 参数单位:无 取值范围: on:表示创建并且使用智能统计信息。 off:表示不创建或者不适用智能统计信息。 默认值:off 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:数据库运行过程中修改可能会造成计划劣化。
  • ai_stats_cache_limit 参数说明:该参数用于指定在enable_ai_stats为on状态下最多缓存的模型数量。 参数类型:整型 参数单位:个 取值范围:30 ~ 1000 默认值:100 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:建议根据使用多列统计信息模型数量设置。 设置不当的风险与影响:最大缓存个数设置过大会占用不必要的内存,参数设置过小会频繁从硬盘读取模型,造成系统性能下降。
  • enable_operator_prefer 参数说明:该参数用于指定是否开启算子倾向性规则,在估计代价相近的情况下,倾向于选择参数化路径执行表连接。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启参数化路径优先。 off:表示不开启参数化路径优先。 默认值:off 此参数生效有两个必要的前置条件: 参数化路径被生成。 参数化路估计的代价和其他索引扫描算子类似。 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:建议设置为默认值,推荐只在session或者hint内指定该参数设置。 设置不当的风险与影响:修改此参数会有严重的计划劣化风险。
  • enable_ai_watchdog_healing 参数说明:开启或关闭AI Watchdog的自愈功能。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启。 off:表示关闭。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
  • FOR_LOOP查询语句 语法图 for_loop_query::=语句如图7所示。 图7 for_loop_query::= label declaration ::=语句如如图8所示。 图8 label declaration ::= 变量target会自动定义,类型和query的查询结果的类型一致,并且只在此循环中有效。target的取值就是query的查询结果。 query可以使用EXECUTE增加动态查询,通过USING向查询插入参数。详见示例中的动态查询相关内容。 示例 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 30 31 32 33 34 35 36 37 38 39 40 41 --循环输出查询结果。 gaussdb=# CREATE OR REPLACE PROCEDURE proc_for_loop_query() AS record VARCHAR2(50); BEGIN FOR record IN SELECT spcname FROM pg_tablespace LOOP dbe_output.print_line(record); END LOOP; END; / CREATE PROCEDURE --调用存储过程 gaussdb=# CALL proc_for_loop_query(); pg_default pg_global proc_for_loop_query --------------------- (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE proc_for_loop_query; DROP PROCEDURE --动态查询 gaussdb=# CREATE TABLE t1(id int); gaussdb=# INSERT INTO t1 VALUES(1); gaussdb=# DECLARE a int := 1; item t1%rowtype; BEGIN FOR item IN EXECUTE 'SELECT * FROM t1 WHERE id = :1' USING a LOOP RAISE INFO '%', item; END LOOP; END; / INFO: (1) ANONYMOUS BLOCK EXECUTE gaussdb=# DROP TABLE t1;
  • FORALL批量查询语句 语法图 forall::=语句图图9所示。 图9 forall::= label declaration ::语句如图10所示。 图10 label declaration ::= 变量index会自动定义为integer类型并且只在此循环里存在。index的取值介于low_bound和upper_bound之间。 示例 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 gaussdb=# CREATE TABLE TEST_t1 ( title NUMBER(6), did VARCHAR2(20), data_period VARCHAR2(25), kind VARCHAR2(25), interval VARCHAR2(20), time DATE, isModified VARCHAR2(10) ) DISTRIBUTE BY hash(did); CREATE TABLE gaussdb=# INSERT INTO TEST_t1 VALUES( 8, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833', to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK' ); INSERT 0 1 gaussdb=# CREATE OR REPLACE PROCEDURE proc_forall() AS BEGIN FORALL i IN 100..120 update TEST_t1 set title = title + 100*i; END; / CREATE PROCEDURE --调用存储过程 gaussdb=# CALL proc_forall(); proc_forall ------------- (1 row) --查询存储过程调用结果 gaussdb=# SELECT * FROM TEST_t1; title | did | data_period | kind | interval | time | ismodified --------+--------+-------------+----------+--------------+---------------------+------------ 231008 | Donald | OConnell | DOCONNEL | 650.507.9833 | 1999-06-21 00:00:00 | SH_CLERK (1 row) --删除存储过程和表 gaussdb=# DROP PROCEDURE proc_forall; DROP PROCEDURE gaussdb=# DROP TABLE TEST_t1; DROP TABLE
  • FOR_LOOP(integer变量)语句 语法图 for_loop::=语句如图5所示。 图5 for_loop::= label declaration ::=语句如图6所示。 图6 label declaration ::= 变量name会自动定义为integer类型并且只在此循环里存在。变量name介于lower_bound和upper_bound之间。 当使用REVERSE关键字时,lower_bound必须大于等于upper_bound,否则循环体不会被执行。 示例 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 --从0到5进行循环 gaussdb=# CREATE OR REPLACE PROCEDURE proc_for_loop() AS BEGIN FOR I IN 0..5 LOOP DBE_OUTPUT.PRINT_LINE('It is '||to_char(I) || ' time;') ; END LOOP; END; / CREATE PROCEDURE --调用存储过程 gaussdb=# CALL proc_for_loop(); It is 0 time; It is 1 time; It is 2 time; It is 3 time; It is 4 time; It is 5 time; proc_for_loop --------------- (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE proc_for_loop; DROP PROCEDURE
  • 场景描述 在配置作业调度时,可以选择每个月的最后一天执行。如果您需要配置作业的调度时间为每月最后一天,请参考下面两种方法。 表1 配置每月最后一天进行调度 配置方法 优势 如何配置 调度周期配置为天,通过条件表达式进行判断是否为每月最后一天 可以灵活适用多种场景。只需要编写条件表达式就可以灵活调度作业去运行。例如,每月最后一天,每月七号等。 方法1 调度周期配置为月,勾选每月最后一天 通过配置调度周期来执行任务调度。不用编写开发语句,通过勾选需要调度的时间去执行任务。 方法2
  • 离散小时调度 场景一:离散小时依赖月、周、天 ,或者月、周、天依赖离散小时, 这六种依赖,依赖的时间范围都是依赖自然天内的所有作业实例。 表1 离散小时调度依赖逻辑一 场景 依赖处理逻辑 离散小时依赖月 依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。 示例一:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是月调度,每月3号12点调度。A依赖B,假设今天是每月3号, 作业A在2点、5点、15点的实例,都会依赖作业B在12点的实例,等到作业B在12点的实例执行成功后,才会执行作业A的实例。 示例二:作业是A离散小时调度,调度时间分别是2/5/15点;作业B是月调度,每月3号12点调度。A依赖B,假设今天不是每月的3号,即今天没有作业B的实例,则因为依赖的作业B在今天没有实例,作业A在2点、5点、15点的实例会直接运行。 月依赖离散小时 依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。 示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是月调度,每月3号12点调度。B依赖A,当作业B在每月3号调度时,作业B在12点的实例,会等依赖的作业A在2/5/15点的实例,都执行成功后,才会开始调度。 离散小时依赖周 依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。 示例一:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是周调度,每周星期一12点调度。A依赖B,假设今天是每周星期一,作业A在2点、5点、15点的实例,都会依赖作业B在12点的实例,等到作业B在12点的实例执行成功后, 才会执行作业A的实例。 示例二:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是周调度,每周星期一12点调度。A依赖B,假设今天不是星期一,即今天没有作业B的实例, 则因为依赖的作业B在今天没有实例,作业A在2点、5点、15点的实例会直接运行。 周依赖离散小时 依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。 示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是周调度,每周星期一12点调度。B依赖A,当作业B在星期一调度时,作业B在12点的实例,会等依赖的作业A在2/5/15点的实例,都执行成功后,才会开始调度。 离散小时依赖天 依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。 示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是天调度,每天12点调度。A依赖B,则作业A在2点、5点、15点的实例,都会依赖作业B在12点的实例,等到作业B在12点的实例执行成功后,才会执行作业A的实例。 天依赖离散小时 依赖时间段范围是[当天的零点,下一天的零点) 这个时间段的作业实例是否跑成功。区间段范围是前闭后开。 示例:作业A是离散小时调度,调度时间分别是2/5/15点;作业B是天调度,每天12点调度。B依赖A,则作业B在12点的实例,会等依赖的作业A在2/5/15点的实例,都执行成功后,才会开始调度。 场景二:离散小时依赖小时、分钟、离散小时, 或者小时、分钟依赖离散小时,依赖都遵循如下规则。 规则一:自然天内,依赖关系中的上游、下游任务数量一致,则上游、下游一对一依赖。 解释:例如作业A依赖作业B,作业A是离散小时调度,每天3/6/8点运行,则作业A一天内有3个实例;作业B小时作业,间隔8小时调度一次,每天0点、8点、16点调度,则作业B一天也是3个实例。 上游作业B与下游作业A在一天内,都是3个实例,则作业A与作业B一对一依赖。 所以作业A与作业B的依赖情况为: 作业A在3点的实例,依赖作业B在0点的实例;作业A在6点的实例,依赖作业B在8点的实例;作业A在8点的实例,依赖作业B在 16点的实例。 规则二:自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将会根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。 先向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。 通过图表进一步进行原理解释: “先向前找上游依赖实例,依赖上游一整个区间内的实例” 解释如下: 图1 先向前找上游依赖实例,依赖上游一整个区间内的实例 “向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例” 解释如下: 图2 向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例 表2 离散小时调度依赖逻辑二 场景 依赖处理逻辑 离散小时依赖小时 依赖时间段范围是[当天的零点,下一天的零点) ,离散小时作业A,小时作业B,作业A依赖作业B。 当离散小时作业A、小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖; 当离散小时作业A、小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。 小时依赖离散小时 依赖时间段范围是[当天的零点,下一天的零点) ,小时作业A,离散小时作业B,作业A依赖作业B。 当小时作业A、离散小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖; 当小时作业A、离散小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。 离散小时依赖分钟 依赖时间段范围是[当天的零点,下一天的零点) ,离散小时作业A,分钟作业B,作业A依赖作业B。 当离散小时作业A、分钟作业B在一天内的实例数量一致时,适用规则一,一对一依赖; 当离散小时作业A、分钟作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。 分钟依赖离散小时 依赖时间段范围是[当天的零点,下一天的零点) ,分钟作业A,离散小时作业B,作业A依赖作业B。 当分钟作业A、离散小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖; 当分钟作业A、离散小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。 离散小时依赖离散小时 依赖时间段范围是[当天的零点, 下一天的零点) ,离散小时作业A,离散小时作业B,作业A依赖作业B。 当离散小时作业A、离散小时作业B在一天内的实例数量一致时,适用规则一,一对一依赖; 当离散小时作业A、离散小时作业B在一天内的实例数量不一致,适用规则二,向前就近找一整个区间的上游实例依赖;未找到,向后找最近的一个实例依赖。
  • 最近依赖调度 最近依赖调度,是在自然周期调度的基础上,对于天依赖小时、天依赖分钟、小时依赖分钟这三种依赖场景,支持选择依赖最近的作业实例。 表3 最近依赖调度 场景 依赖处理逻辑 天依赖小时(勾选最近依赖) 依赖时间段范围是[当天的零点,下一天的零点) ,不可跨天。 示例一:天作业A每天8点调度;小时作业B每小时15分钟开始调度。则天作业A依赖最近的小时作业实例,即依赖7点15分的小时作业实例。 示例二:天作业A每天0点30分调度;小时作业B每小时40分钟开始调度。因为天作业前面没有小时任务,则天任务不依赖任何小时任务,直接运行。 天依赖分钟(勾选最近依赖) 依赖时间段范围是[当天的零点, 下一天的零点) ,不可跨天。 小时依赖分钟(勾选最近依赖) 往前找到最近的分钟任务,挂载依赖。 示例:小时作业A每小时15分钟开始调度;分钟作业B从凌晨一点开始每15分钟调度一次。则小时作业A在0点15分的实例,依赖分钟作业B在昨天23点45分的实例;小时作业A在1点15分的实例,依赖分钟作业B在1点15分的实例。
  • 月依赖周 规则:依赖自然天,月作业依赖前一天的周作业,如果周作业在前一天未执行,月作业直接执行。如果周作业在前一天执行,月作业会等待周作业执行完成后,再开始执行。 举例1:A依赖B,A作业每月10号执行,B作业每周三执行。在A作业执行时,前一天非周三,B作业未执行,A作业则直接执行。 举例2:A依赖B,A作业每月10号执行,B作业每周三执行。在A作业执行时,前一天正好是周三,B作业会执行,则A作业等待B作业执行完成后开始执行。
  • 月依赖月 规则:依赖自然天,月作业依赖前一天的月作业,如果被依赖的月作业如果在依赖作业之后执行,则依赖作业不会阻塞,正常执行。除此之外均会按照依赖关系去执行。 举例1:A依赖B,A作业每月1号执行,B作业每月2号执行,A作业1号正常执行,B作业不阻塞A作业执行。 举例2:A依赖B,A作业和B作业都是2号执行,A作业会依赖B作业执行完成后的作业实例。 举例3:A依赖B,A作业每月3号执行,B作业每月2号执行,3号A作业依赖2号B作业。
  • 周依赖月 规则:依赖自然天,周作业依赖前一天的月作业,如果月作业在前一天未执行,周作业直接执行。如果月作业在前一天执行,周作业会等待月作业执行完成后,再开始执行。 举例1:A依赖B,A作业每周三执行,B作业每月10号执行。在A作业执行时,如果前一天正好是10号,A作业会等待B作业执行完成后执行。 举例2:A依赖B,A作业每周三执行,B作业每月10号执行。在A作业执行时,如果前一天不是10号,则A作业直接执行。
  • 天依赖周 规则:依赖自然天,天作业依赖前一天的周作业,如果周作业在前一天未执行,天作业直接执行。如果周作业在前一天执行,天作业会等待周作业执行完成后,再开始执行。 举例1:A依赖B,A作业每天执行,B作业每周三执行。在A作业执行时,前一天非周三,B作业未执行,A作业则直接执行。 举例2:A依赖B,A作业每天执行,B作业每周三执行。在A作业执行时,前一天是周三,B作业会执行,则A作业等待B作业执行完成后,开始执行。
  • 小时依赖分钟 规则:小时作业依赖分钟作业,往前推到上一个自然小时范围内的所有分钟级实例。区间是前开后闭(2:00,3:00]。 举例1:A依赖B,A为小时作业,每个小时0分执行,B为分钟作业,每15分钟执行一次;B执行完后执行A。A作业依赖自然小时范围内B作业实例,3:00执行的A任务依赖四个B作业实例(2:15、2:30、2:45和3:00)。 图6 小时依赖分钟举例一 如果在配置作业依赖关系时勾选“最近”依赖的按钮,小时作业只依赖所选作业最近的一个运行实例,比如A在3:00开始调度,A依赖B最近的2:45调度的一个运行实例。 如果作业A在零点进行调度,所依赖作业B可以是昨天的分钟任务。
  • 天依赖小时 规则:按自然天,天周期作业实例依赖一天内所有小时作业的实例。A为天作业,依赖B小时作业,A依赖所有B在自然天内的实例,A会在最后一个B小时作业实例执行完成后执行。 举例:A依赖B,A配置的调度时间为每天17点执行一次,B从0点开始,每5个小时执行一次,那么A实际执行时间为JobB在20点的实例运行完之后开始运行。 图11 天依赖小时 如果在配置作业依赖关系时勾选“最近”依赖的按钮,天作业只依赖所选作业最近的一个运行实例,比如A在每天17点开始调度,A依赖B最近的15:00调度的一个运行实例。
共100000条