华为云用户手册

  • GUC参数 表8 GUC参数 变更类型 序号 名称 变更描述 新增 1 enable_wlm_internal_memory_limit 控制是否打开wlm内部的限制,如:作业估算内存不超过80%/90%/40%的限制。 2 enable_strict_memory_expansion 控制作业是否在DN上做内存扩展。 3 allow_zero_estimate_memory 控制作业在没有统计信息情况下,是否允许将估算内存设置为0。 4 max_process_memory_auto_adjust 控制CM在主备切换情况下是否对max_process_memory做动态调整。 5 wlm_memory_feedback_adjust 控制CCN的动态负载管理中的内存负反馈功能是否开启,支持:on、off、on(50,40) 三种设置方式。 6 autoanalyze_mode 新增系统级autoanalyze模式的控制参数(默认normal与前向行为一致,设置为light则启用动态采样)。 7 enable_redactcol_computable 用于设置是否开启数据脱敏可算功能,默认关闭。 8 windowagg_pushdown_enhancement 控制窗口函数和group by同时出现时是否将partition by 和 group by的交集下推。 9 enable_from_collapse_hint 控制是否启用优先选择hint的计划,默认启用,并支持语句级hint参数。 10 enable_value_redistribute 用于设置是否使用value partition stream优化windowagg。 11 setop_optmode 控制setop操作的各个子查询分支是否做去重操作,默认值disable,即不去重,跟8.2.0之前版本保持一致;配置值force:强制走去重;配置值cost,基于cost选择是否去重。(注:setop分支的底层为stream算子的时候才会尝试去重)。 12 security_enable_options 表示安全模式下部分操作解禁,默认为空。 13 audit_object_name_format 控制审计日志中object_name字段显示对象名的格式,默认single,显示单对象。 14 enable_redactcol_equal_const 用于限制新版本脱敏下允许常量套取的行为,默认关闭,禁止脱敏列与常量做等值比较。 15 enable_mixedagg 用于控制是否生成Mixed Agg执行计划,默认关闭。 16 max_streams_per_query 用于控制对stream数量过多的plan在优化器阶段报错,避免stream建连占用过多连接,默认值10000。 17 agg_max_mem 用于控制Agg算子聚集列超过5个时,最大的估算内存,防止估算内存过大导致CCN排队。 18 max_volatile_memory volatile临时表相关内存context的最大量,单位kb,取值范围1024-INT_MAX,默认1GB。 19 max_volatile_tables 单个session中volatile临时表(包括创建时的附属表,如toast、cudesc)的个数限制,默认300。 20 enable_hashfilter 用来控制是否可以生成hashfilter。 21 volatile_shipping_version 控制8.2.0版本sequence下推增强能力,默认1。 22 smp_thread_cost 用于控制生成的query_dop值。默认值为1000。 23 enable_wal_decelerate 用于带索引导入时的流控限速的总开关。 24 wal_decelerate_policy 用于表示触发限速后的行为策略。 25 wal_write_speed 用于表示单DN每个query每秒最大允许触发wal写入动作的速度Byte/s。 26 wal_decelerate_trigger_threshold 用于表示单DN每个query触发wal写入限速的门限。 27 enable_cstore_ring_buffer 控制是否开启列存RingBuffer。 28 enable_tsdb_multi_temperature 控制是否开启时序表的obs冷热功能,默认为关闭。 29 enable_tsdb_multi_temperature 控制是否开启时序表的obs冷热功能,默认为关闭。 30 ddl_lock_timeout 用于单独指定阻塞DDL语句等锁的时间,让DDL拿不到锁快速终止,只对八级锁有效,默认值为0,表示不生效。 31 build_backup_param 控制增量build过程中用于磁盘备份的最小满足规格。 修改 32 comm_tcp_mode 参数类型从POSTMASTER修改为SIGHUP。 33 max_process_memory 进程的最大内存,由POSTMASTER类型修改为SIGHUP;最小阈值为2G,不推荐设置为最小阈值。 34 rewrite_rule 新增eager_magicset枚举值控制magic set增强功能。 35 behavior_compat_options behavior_compat_options新增normal_session_id取值,用于控制是否session id是否拼接node_name,默认关闭,session id拼接node_name。 36 behavior_compat_options merge_into_with_trigger新增behavior_compat_options,开启后支持对有触发器的表执行MERGE INTO,默认关闭 37 behavior_compat_options 增加选项disable_jsonb_exact_match,控制操作符匹配规则,默认关闭; 参数关闭时,仅支持jsonb相关类型的精确匹配;若精确匹配失败,则会在剩余不含jsonb类型的备选中匹配; 参数打开时,行为回退,操作符匹配不区分类型; 38 hashjoin_spill_strategy 新增两种策略5,6。行为与原来0、1相同。原来0、1行为修改。从内表较大内存放不下,外表较小时进行内外表交换,改成内表较大内存放不下,继续划分内表,直到无法划分。在尝试内外表交换, 39 sql_use_spacelimit 对sql_use_spacelimit参数初始值进行设置。将其修改为当前实例所在磁盘的10%(上限),不足10G(下限)时,设置为10G 40 temp_file_limit 对temp_file_limit参数初始值进行设置。将其修改为当前实例所在磁盘的10%(上限),不足10G(下限)时,设置为10G。 删除 41 enable_grant_public 表示安全模式下不支持grant to public语法。 42 enable_grant_option 表示安全模式下不支持grant with grant option语法。
  • 系统视图 表7 系统视图 变更类型 序号 名称 变更描述 新增 1 gs_obs_latency 新增视图用于监控OBS延迟。 2 pgxc_stat_wal 查询当前query的wal日志和数据页的流量信息。 3 pgxc_lockwait_detail 显示每个节点中锁等待链详细信息。 4 pgxc_wait_detail 显示所有节点SQL等待从上之下的等待链详细信息,包括wait_node、query等。 修改 5 gs_obs_read_traffic OBS读写带宽视图,修改为按10分钟间隔聚集,增加logtime列显示时间分组。 6 gs_obs_write_traffic OBS读写带宽视图,修改为按10分钟间隔聚集,增加logtime列显示时间分组。
  • 行为变更 表2 行为变更 变更类型 序号 名称 变更描述 新增 1 支持windowagg生成value partition执行计划 窗口函数出现在语句的最外层,如果没有加order by,基线行为数据会是有序的,8.2.0版本默认开启enable_value_redistribute以后,数据会变成无序的,需要指定order by子句才能保证有序。 修改 2 异常规则配置方式变更,由工具变更为语法配置 异常规则原来由gs_cgroup对其对应的控制组做配置,8.2.0更改为CREATE/ALTER/DROP EXCEPT RULE语法配置,新版本使用gs_cgroup配置时会给出相应提示。 3 异常规则内部去除qualificationtime,以elapsedtime取代 qualificationtime在旧版本作为一个规则,但是只能与cpuskewpercent合并使用,效果和elapsedtime相同。因此去除该配置项,直接配置elapsedtime即可。 4 tid字段名 行存支持tid字段名,原行存不支持tid字段名。 5 max_process_memory CN调整为DN的一半。
  • SQL语法 表3 SQL语法 变更类型 序号 名称 变更描述 新增 1 表属性参数analyze_mode 新增表级analyze模式的控制参数(该表支持哪种analyze),不设置时与前向无变化。 2 禁用子查询提升hint 增加禁用子查询提升hint,支持形式:no_merge当前查询,no_merge(relid)指定对象。 3 hint在DML语句中生效 增加支持hint在insert/update/merge/delete语句中生效。 4 agg重分布hint增加支持指定列名 agg重分布hint增加支持指定列名,形式为/+ redistribute ((*) (a b c d)) */。 5 agg重分布hint增加支持指定count(distinct)列 agg重分布hint支持指定count(distinct)列在双层hashagg场景下生效。 6 invisible 新增索引OPTIONS,用于设置索引扫描在执行计划中是否可见。 7 支持MySQL中的反引号 支持使用反引号区分普通字符和特殊字符。 8 创建表时,列定义支持指定on update属性 列定义指定on update属性时,当数据有更新时,自动填充更新时间戳。 9 CREATE/ALTER/DROP EXCEPT RULE 新增语法用于新增、创建、删除内核异常规则。 10 CREATE SERVER增加OPTIONS security_token 新增OPTIONS security_token 用于传递securitytoken 用于临时AK,SK访问OBS。 11 CREATE FOREIGN TABLE增加OPTIONS security_token 新增OPTIONS security_token 用于传递securitytoken 用于临时AK,SK访问OBS。 12 OBS外表(dist_fdw)option参数新增file_split_ threshold选项 OBS外表(dist_fdw)option参数新增file_split_ threshold选项。 13 GDS外表新增gds_compress参数 基于GDS管道文件导入导出,用于GDS互联互通时候数据在DN和GDS之间压缩传输,目前仅支持snappy压缩算法普通文件的导入导出不支持该参数。 14 GDS外表新增dataencoding参数 用于表示latin1数据库中保存的数据的字符集。 15 gc_fdw互联互通外表(sql on other gaussdb 外表)新增gds_compress参数 用于GDS外表互联互通时候数据在DN和GDS之间压缩传输,目前仅支持snappy压缩算法。 16 gc_fdw互联互通外表(sql on other gaussdb)新增dataencoding参数 用于表示执行端laint1数据库中保存的数据的字符集。 修改 17 CREATE/ALTER REDACTION POLICY 表级参数deltarow_threshold的默认值设置为10000,指定列存表导入时小于多少行的数据进入delta表,只在表级参数enable_delta开启时生效。 18 资源池关联异常规则语法变更 新增INHERIT选项,说明策略是否继承自其他策略。 19 single_node支持obs外表语法 资源池旧版本可用于配置内存异常规则,8.2.0统一异常规则接口为 CREATE/ALTER RESOURCE POOL 'pool' with (EXCEPT_RULE='rule1,2'); 20 OBS外表(dist_fdw)支持使用server指定AK、SK single_node支持obs外表(dfs_fdw)。
  • 系统表 表5 系统表 变更类型 序号 名称 变更描述 新增 1 gs_blocklist_query 新增系统表用于保存黑名单语句和异常规则触发信息。 2 pg_except_rule 新增pg_except_rule系统表,用于存储当前集群所创建的异常规则信息,包括规则名称,具体规则阈值,以及规则触发的action。 修改 3 pg_redaction_policy, pg_redaction_column 新增inherited列,说明策略是否由用户手动创建
  • 系统函数 表6 系统函数 变更类型 序号 名称 变更描述 新增 1 pg_stat_get_runtime_relstats 新增函数,开启动态采样后autoanalyze生成的表级统计信息存放于内存中,该函数用于查询。 2 pg_stat_get_runtime_attstats 新增函数,开启动态采样后autoanalyze生成的列级统计信息存放于内存中,该函数用于查询。 3 pg_stat_set_last_data_changed_num 新增手动设置表历史累计修改量接口,用于pgstat内容丢失的补救措施 4 strcmp() 字符串比较,相等返回0,小于返回-1,其他返回1,入参含null返回null 5 hex() 入参字符串的每个字符或十进制整数转化为十六进制数字。 6 unhex() 执行从HEX(str)的反向操作。就是说,它将参数中的每一对十六进制数字理解为一个数字,并将其转化为该数字代表的字符。结果字符以bytea的形式返回。 7 space(n) 返回n个空格构成的字符串 8 rand() 获取0.0 到 1.0 之间的随机数。 9 truncate(x,d) 将x截断为d位小数。d为负数时截断整数位为0。 10 addtime(expr1,expr2) 增加时间。expr1是time或timestamp类型,expr2是interval类型。 11 subtime(expr1,expr2) 特定时间减去指定的时间。expr1 - expr2 expr1为time、timestamp类型。expr2为interval类型,返回类型同expr1。 12 timediff(expr1,expr2) 计算两个参数的时间差。expr1 - expr2,返回time类型, 入参需同为time类型或timestamp类型。 13 curdate() 返回当前日期,date类型。 14 curtime([fsp]) 返回当前时间,time类型 fsp-它指定返回的小数秒精度。 15 uuid() 返回通用唯一标识符(UUID)。 16 convert_tz() 进行时区转换。 17 cast(expr,typename) 将expr转换为指定type。 18 digest() digest()函数可以根据不同的算法生成数据的二进制哈希值。 19 hmac() hmac()函数可以根据不同的算法为带有密钥的数据计算出MAC值。 20 crypt()和gen_salt() crypt()和gen_salt()函数专用于哈希密码。crypt()执行哈希用于加密数据,gen_salt()用于生成加盐哈希。 21 pgp_sym_encrypt() 用于对称密钥加密。 22 pgp_sym_decrypt() 用于解密PGP对称密钥加密后的消息。 23 pgp_pub_encrypt() 用于公共密钥加密。 24 pgp_pub_decrypt() 用于解密PGP公共密钥加密后的消息。 25 pgp_key_id() 用于提取PGP公钥或者私钥的密钥ID;如果传入一个加密后的消息,将会返回加密该消息使用的密钥ID。 26 armor() 用于将二进制数据转换为PGP ASCII-armor格式,相当于Base64加上CRC以及额外的格式化。 27 dearmor() 用于执行与armor()函数相反的转换。 28 pgp_armor_headers() 函数用于返回数据中的armor header。 29 encrypt 原始加密函数,不支持PGP加密的任何高级功能。IV是0。 30 decrypt 原始解密函数,不支持PGP加密的任何高级功能。IV是0。 31 encrypt_iv 原始解密函数,不支持PGP加密的任何高级功能。IV可由用户设定。 32 decrypt_iv 原始解密函数,不支持PGP加密的任何高级功能。IV可由用户设定。 33 gen_random_bytes gen_random_bytes()函数用于生成具有强加密性的随机字节。 34 gen_random_uuid() gen_random_uuid()函数用于返回一个version 4的随机UUID。 35 get_volatile_pg_class 获取内存中volatile临时表的pg_class相关元数据(volatile临时表元数据不存储系统表)。 36 get_volatile_pg_attribute 获取内存中volatile临时表的pg_attribute相关元数据。 37 gs_increase_except_num 新增函数,用于增加查询异常触发次数。 38 gs_update_blocklist_hash_info 新增函数用于更新内存中黑名单信息。 39 gs_append_blocklist 新增函数用于新增黑名单语句。 40 gs_remove_blocklist 新增函数用于将语句移出黑名单。 41 gs_wlm_rebuild_except_rule_hash 新增gs_wlm_rebuild_except_rule_hash函数用于主动触发build异常规则内核hash表。 42 pg_stat_wal_write 用于查询当前cn或dn上的线程信息,以及wal和数据页导入量及速率。 43 pgxc_stat_wal_write 用于查询cn与dn交互的线程信息,以及wal和数据页导入量及速率。 44 get_col_file_info 获取指定列存表的空CU文件数和总CU文件数。 45 get_all_col_file_info 获取所有列存表的空CU文件数和总CU文件数。 46 col_rebuild_file_relation 更换Relfilenode,重新整理指定列存表的CU文件,重整后变回连续的1GB文件。 修改 47 pg_query_audit/pgxc_query_audit 修改thread_id字段为session id字段,记录语句执行所在的session。 48 login_audit_messages/login_audit_messages_pid 新增session id字段,记录语句执行所在的session。
  • PG_LOCKS PG_LOCKS视图存储各打开事务所持有的锁信息。 表1 PG_LOCKS字段 名称 类型 引用 描述 locktype text - 被锁定对象的类型:relation,extend,page,tuple,transactionid,virtualxid,object,userlock,advisory。 database oid PG_DATABASE.oid 被锁定对象所在数据库的OID。 如果被锁定的对象是共享对象,则OID为0。 如果是一个事务ID,则为NULL。 relation oid PG_CLASS.oid 被锁定对象关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。 page integer - 关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。 tuple smallint - 页面里边的行编号,如果对象不是行,则为NULL。 virtualxid text - 事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。 transactionid xid - 事务的ID,如果对象不是一个事务ID,则为NULL。 classid oid PG_CLASS.oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid - 对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。 objsubid smallint - 对于表的某个字段对应为字段编号;对于其他对象类型,该字段为0;如果该对象不是普通数据库对象,则为NULL。 virtualtransaction text - 持有此锁或者在等待此锁的事务的虚拟ID。 pid bigint - 持有此锁或者等待此锁的服务器线程的逻辑ID。如果锁被一个预备事务持有,则为NULL。 mode text - 此线程持有的或者是期望持有的锁模式。更多有关锁模式的内容请参见LOCK。 granted boolean - 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean - 如果通过fast-path获得锁,则为TRUE;如果通过主锁表获得,则为FALSE。 父主题: 系统视图
  • 存储过程 商业规则和业务逻辑可以通过程序存储在 GaussDB (DWS)中,这个程序就是存储过程。 存储过程是SQL,PL/SQL,Java语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。 存储过程的创建及调用办法请参考CREATE PROCEDURE。 PL/pgSQL语言函数节所提到的PL/pgSQL语言创建的函数与存储过程的应用方法相通。下面各节中,除非特别声明,否则内容通用于存储过程和PL/pgSQL语言函数。 父主题: 存储过程
  • 计费示例 以全文索引使用场景为例。 图中价格仅为示例,实际计算请以价格计算器中的价格为准。 假设您有1台服务器,每天产生100GB原始日志,并开启全文索引,日志存储时长30天(存储日志的时长,只存30天的日志,第31天则会删除第一天的日志)。开启智能冷存储后,标准存储层数据保存时间为7天,则冷存储时长为30-7=23天,具体明细如下表所示。 表2 计费明细表(全文索引使用场景) 计费项 说明 使用量 单价 月计费 读写流量 每天读写流量100GB/5(压缩倍率)=20GB(压缩后),30天累计20GB*30=600GB 600GB 0.18元/GB (600GB-500MB/1024) *0.18=107.91元 索引流量 索引流量为100GB*30=3000GB 3000GB 0.32元/GB (3000GB-500MB免费额度/1024) *0.32=959.84元 标准存储 标准存储量为100GB/天*7天=700GB 700GB 0.000479元/GB/小时 (700GB-500MB免费额度/1024)*0.000479*24小时*30天=241.25元 冷存储 冷存储量为100GB/天*23天=2300GB 2300GB 0.000208元/GB/小时 2300GB*0.000208*24小时*30天=344.45元 日志基础转储流量 日志基础转储流量为100GB/天*30天=3000GB 3000GB 0.05元/GB 3000GB*0.05=150元 日志高级转储流量 日志高级转储流量为100GB/天*30天=3000GB 3000GB 0.2元/GB 3000GB*0.2=600元
  • 计费说明 如图1所示, 云日志 服务的计费项由日志读写流量、日志索引流量、日志存储量、日志基础转储流量和日志高级转储流量费用组成。具体内容请查看表1。 图1 计费项 表1 计费组成表 费用类别 计费项 计费说明 付费方式 免费额度 流量费用 日志读写流量 日志读写流量包括写流量和读流量,详细说明如下: 写流量:数据(压缩后)被上传到日志服务时,按照传输的数据量计算写流量费用。 例如:原始数据量为5GB,则上传到云日志服务会产生1GB(压缩率20%)的写流量。 读流量:读流量暂未统计和收费。 按量付费: 读写流量费用= 写流量(GB,20%压缩率)× 每GB单价 500 MB/月 日志索引流量 日志索引流量,详细说明如下: 原始日志数据默认会构建全文索引,按照日志(未压缩)被构建索引所产生的索引数据量计算索引流量。 在写入数据时一次性收取索引流量费用,即全文索引流量费用。 对同时构建了全文索引和字段索引的字段,只计算一次索引流量费用,即全文索引流量费用。 当关闭全文索引,仅开启字段索引,则long类型和float类型的字段名将不记入索引流量中,每个字段值占用的索引流量统一为8字节。如果是String类型,则日志字段名(Key)和字段值(Value)都将作为text类型存储,字段名和字段值都被计入索引流量中。使用字段索引,可降低索引流量费用。 示例: 对request_uri字段名设置了索引(String类型),字段值为/request/path,则字符串request_uri和/request/path都会被计入索引流量中。 对status字段名设置了索引(long类型),字段值为400,则字段名status不会被计入在索引流量中,字段值400的索引流量统一为8字节。 说明: 目前字段索引功能仅针对部分友好用户内测使用,后续将全网开放,敬请期待! 示例: 例如:原始日志量为10GB,写入到日志服务并开启全文索引,则索引流量以10GB 计费。 例如:原始日志量为10 GB,写入到日志服务并关闭全文索引开启其中两个字段的索引,这两个字段的数据量为5GB,则索引流量以5GB 计费。 例如:原始日志量为10GB,写入到日志服务并开启全文索引和其中两个字段的索引,则索引流量以10GB计费。 按量付费: 日志索引费用=索引流量(GB)× 每GB单价 500 MB/月 存储费用 标准存储量 标准存储量,包含原始日志(含备份,压缩后)和日志被建立索引(未压缩)所产生的存储量。 示例: 例如:原始日志为10GB,上传到云日志服务并开启全文索引,原始日志(含备份,压缩后)+日志索引数据的存储量=10GB。 按量付费: 标准存储量费用=标准存储量(GB)× 每GB单价 500 MB/月 冷存储量 冷存储跟标准存储量统计方式一样,包含原始日志(含备份,压缩后)和日志被建立索引(未压缩)所产生的存储量。 按量付费: 冷存储量费用=冷存储量(GB)× 每GB单价 无 转储费用 日志转储功能免费公测即将结束(从24年430到24年630逐步在各Region启用转储计费)。 转储费用只统计用户的日志字段,LTS的内置保留字段不参与流量统计。 提供如下转储日志样例,方便进行流量统计举例说明:原始日志:"192.168.0.1 200 190 /check" 该日志被结构化解析后为:{"ip":"192.168.0.1","status":200,"cost_time":190,"url":"/check"} 日志基础转储流量 转储OBS(原始日志格式/JSON格式)、转储DMS、转储DIS属于日志基础转储,典型特征是源日志流和转储目标之间不需要字段映射,日志基础转储算力消耗相对日志高级转储较少。 转储流量会统计非压缩的转储数据量,以转储DMS流量统计为例: 若用户转储原始日志:LTS会统计转储的原始日志的大小(非压缩),那么统计的转储流量是length("192.168.0.1 200 190 /check")=26字节 若用户转储结构化解析后的日志:LTS会统计转储日志的KEY和VALUE的大小(非压缩),数字统一按照8字节,那么统计的转储流量是length("ip")+length("192.168.0.1")+length("status")+8+length("cost_time")+8+length("url")+length("/check")=2+11+6+8+9+8+3+6=53字节 按量付费: 日志基础转储流量费用=转储流量(GB,非压缩)× 每GB单价 无 日志高级转储流量 转储OBS(ORC格式)、转储DWS、转储 DLI 属于日志高级转储,典型特征是源日志流和转储目标之间需要字段映射,日志高级转储算力消耗相对日志基础转储较多。 转储流量会统计非压缩的转储数据量,以转储DWS流量统计为例: 若用户将转储日志样例中的ip、status、cost_time、url 4个字段都转储到DWS数仓中,那么LTS会统计转储日志的每个字段的VALUE的大小(非压缩),数字统一按照8字节,那么统计的转储流量是length("192.168.0.1")+8+8+ length("/check")=11+8+8+6=33字节 按量付费: 日志高级转储流量费用=转储流量(GB,非压缩)× 每GB单价 无 如果每月免费赠送的额度已经可以满足您的使用需求,超过后希望暂停日志收集,可以在配置中心进行设置,详情请参见:配置中心。
  • 解释说明 周期调度作业支持设置调度周期符合条件的作业为依赖作业。设置依赖作业的操作详情请参考配置作业调度任务(批处理作业)章节。 例如周期调度作业A,可设置其依赖作业为作业B,如图1所示进行配置。则仅当其依赖的作业B在某段时间内所有实例运行完成、且不存在失败实例时,才开始执行作业A。 依赖的作业B的“某段时间”,计算方法如下,详见后文设置依赖作业后的作业运行原理。 同周期依赖,如分钟依赖分钟、小时依赖小时或天依赖天时,“某段时间”为 (作业A执行时间-作业A周期时间, 作业A执行时间] 。 跨周期依赖:如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天时,“某段时间”为 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 。 作业A是否判断其依赖的作业B的实例状态,与“依赖的作业失败后,当前作业处理策略”参数有关,具体如下: “依赖的作业失败后,当前作业处理策略”参数配置为“挂起”或“取消执行”后,当其依赖的作业B在某段时间内存在运行失败实例,则作业A“挂起”或“取消执行”。 “依赖的作业失败后,当前作业处理策略”参数配置为“继续执行”,只要其依赖的作业B在某段时间内所有实例跑完(不判断其状态),则作业A就继续执行。 图1 作业依赖属性
  • 设置依赖作业的条件 当前周期调度作业的调度周期包括分钟、小时、天、周、月这五种周期,周期调度作业A如果要配置依赖作业为周期调度作业B,则调度周期必须符合以下要求: 作业A的调度周期不能比依赖作业B小。例如,作业A和作业B同为分钟/小时调度,A的间隔时间小于B的间隔时间,则作业A不能设置作业B为依赖作业;作业A为分钟调度,作业B为小时调度,则作业A不能设置作业B为依赖作业。 作业A和依赖作业B中不能有任一调度周期为周。例如,作业A的调度周期为周或作业B的调度周期为周,则作业A不能设置作业B为依赖作业。 调度周期为月的作业只能依赖调度周期为天的作业。例如,作业A的调度周期为月,则作业A只能设置调度周期为天的作业为依赖作业。 不同调度周期的作业,其允许配置的依赖作业调度周期总结如图2所示。 图2 作业依赖关系全景图
  • 设置依赖作业后的作业运行原理 同周期依赖和跨周期依赖的作业运行原理有所差异。为方便说明,本例中假设“依赖的作业失败后,当前作业处理策略”参数设置为“继续执行”,作业A不判断作业B的实例运行状态;如果该参数设置为“挂起”或“取消执行”,则作业A还会额外判断作业B的实例中是否存在失败实例。 同周期依赖:即作业A与其依赖作业B为相同调度周期,如分钟依赖分钟、小时依赖小时或天依赖天。 同周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 (作业A执行时间-作业A周期时间, 作业A执行时间] 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。 示例1:作业A依赖作业B,均为分钟调度。作业A的开始时间10:00,周期时间20分钟;作业B的开始时间10:00,周期时间10分钟。则会出现如下情况: 表1 示例1:同周期作业依赖情况 时间点 作业B(分钟调度,开始时间10:00,周期时间10分钟) 作业A(分钟调度,开始时间10:00,周期时间20分钟) 10:00 执行 检查 (09:40, 10:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A 10:10 执行 - 10:20 执行 检查 (10:00, 10:20] 区间,有作业B实例运行,待作业B执行完成后,执行作业A 10:30 执行 - ... ... ... 示例2:作业A依赖作业B,均为天调度。作业A的开始时间为8月1日09:00;作业B的开始时间8月1日10:00。则会出现如下情况: 表2 示例2:同周期作业依赖情况 时间点 作业B(天调度,开始时间为8月1日10:00) 作业A(天调度,开始时间8月1日09:00) 8月1日09:00 - 检查 (7月31日09:00, 8月1日09:00] 区间,无作业B实例运行,不执行作业A 8月1日10:00 执行 - 8月2日09:00 - 检查 (8月1日09:00, 8月2日09:00] 区间,有作业B实例运行,待作业B执行完成后,执行作业A 8月2日10:00 执行 - ... ... ... 天作业依赖天作业,上游作业调度时间早于下游作业,下游作业才能依赖到上游当天的作业。 跨周期依赖:即作业A与其依赖作业B为不同调度周期,如小时依赖分钟、天依赖分钟、天依赖小时或月依赖天。 跨周期依赖的情况下,当作业A的依赖作业配置为作业B后,作业A会在 [上一作业A调度周期的自然起点, 当前作业A调度周期的自然起点) 时间区间内检查是否有作业B的实例运行,只有在此期间作业B的实例运行完成才会运行作业A。 调度周期的自然起点定义如下: 调度周期为小时:上一调度周期的自然起点为上一小时的零分零秒,当前调度周期的自然起点为当前小时的零分零秒。 调度周期为天:上一调度周期的自然起点为昨天的零点零分零秒,当前调度周期的自然起点为今天的零点零分零秒。 调度周期为月:上一调度周期的自然起点为上个月1号的零点零分零秒,当前调度周期的自然起点为当月1号的零点零分零秒。 示例3:作业A依赖作业B,作业A为天调度,作业B为小时调度。作业A的每天02:00执行;作业B的开始时间00:00,间隔时间10小时。则会出现如下情况: 表3 示例3:跨周期作业依赖情况 时间点 作业B(小时调度,开始时间00:00,间隔时间10小时) 作业A(天调度,每天02:00执行) 第1天00:00 执行 - 第1天02:00 - 检查 [第0天00:00:00, 第1天00:00:00) 区间,无作业B实例运行,不执行 第1天10:00 执行 - 第1天20:00 执行 - 第2天00:00 执行 - 第2天02:00 - 检查 [第1天00:00:00, 第2天00:00:00) 区间,有作业B实例运行完成,执行作业A 第2天10:00 执行 - 第2天20:00 执行 - ... ... ... 示例4:作业A依赖作业B,作业A为月调度,作业B为天调度。作业A的每月1号、2号的02:00执行;作业B在8月1日00:00开始执行。则会出现如下情况: 表4 示例4:跨周期作业依赖情况 时间点 作业B(天调度,8月1日00:00执行) 作业A(月调度,每月1号、2号的02:00执行) 8月1日00:00 执行 - 8月1日02:00 - 检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行 8月2日00:00 执行 - 8月2日02:00 - 检查 [7月1日00:00:00, 8月1日00:00:00) 区间,无作业B实例运行,不执行 ... - ... 9月1日00:00 执行 - 9月1日02:00 - 检查 [8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A 9月2日00:00 执行 - 9月2日02:00 - 检查 [8月1日00:00:00, 9月1日00:00:00) 区间,有作业B实例运行完成,执行作业A ... ... ...
  • 小时依赖分钟 规则:小时作业依赖分钟作业,往前推到上一个自然小时范围内的所有分钟级实例。区间是前开后闭。 举例1:A依赖B,A为小时作业,每个小时0分执行,B为15m分钟作业;B执行完后执行A。 举例2:A依赖B,A为小时作业,启动时间3:20,B为15m作业,会依赖往前推一个小时内的所有B实例。 如果勾选“最近”的按钮,小时作业只依赖所选作业最近的一个运行实例,比如A在3:20开始调度,A依赖B最近的3:00调度的一个运行实例。 如果作业A在零点进行调度,所依赖作业B可以是昨天的分钟任务。
  • 天依赖小时 规则:按自然天,天周期作业实例依赖一天内所有小时作业的实例。A为天作业,依赖B小时作业,A依赖所有B在自然天内的实例,A会在最后一个B小时作业实例执行完成后执行。 举例:A依赖B,A配置的调度时间为每天17点执行一次,B从0点开始,每5个小时执行一次,那么A实际执行时间为JobB在20点的实例运行完之后开始运行。 如果勾选“最近”的按钮,天作业只依赖所选作业最近的一个运行实例,比如A在每天17点开始调度,A依赖B最近的15:00调度的一个运行实例。
  • 分钟依赖分钟 规则:分钟是最小调度粒度,没有自然分钟周期的概念,依赖策略是往前推一个调度周期找依赖实例。 举例1:A依赖B,为同周期分钟作业,在同一时间点,B执行完后开始执行A。 举例2:A依赖B,A为15分钟周期,B为10分钟周期,A往前推15分钟(包括当前启动整点),依赖范围内的B实例,在2:15分执行A任务依赖1个B实例(2:10分),2:30执行的A任务依赖两个B实例(2:20和2:30)。它的边界范围为(0分:15分],前开后闭区间。
  • 小时依赖小时 规则:每个自然小时周期内的实例产生依赖,区间边界是自然小时[00:00, 00:59]。 举例1:A依赖B,在同自然小时内,无论A、B设置在什么时间点执行,A永远在B之后执行。 举例2:A依赖B,A在每小时5分0秒执行,B在12分执行,A会等B执行完成后执行。 离散小时依赖离散小时 : 自然天内,依赖关系中的上游、下游任务数量一致,上下游周期数一致。 自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。从index向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。
  • 小时依赖小时 规则:每个自然小时周期内的实例产生依赖,区间边界是自然小时[00:00, 00:59],依赖策略是调度周期长的作业,往前推一个调度周期找依赖实例。 A依赖B,在同自然小时内,无论A、B设置在什么时间点执行,A永远在B的前一周期完成后执行。 举例:A在每小时5分0秒执行,B在12分执行,A会在每小时5分时依赖B上一小时生成的实例。 离散小时依赖离散小时 : 自然天内,依赖关系中的上游、下游任务数量一致,上下游周期数一致。 自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。从index向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。
  • 原因分析 DDoS高防判定表1中的端口为高危端口,禁止使用。 表1 高危端口 协议 端口 TCP类 135、136、137、138、139、445、3333、4444、5554、6000、8090、9995、9996、25000、50050、53413、60000 UDP类 135、137、138、139、593、901、1027、1028、1068、2745、3127、3128、3333、5800、5900、6000、6129、6667、8090、8998、9996、25000、50050、5341、60000
  • 如何解除黑洞 当服务器(云主机)进入黑洞后,您可以参考表1进行处理。 表1 解除黑洞方式 DDoS防护版本 解封策略 解除方法 DDoS原生基础防护(Anti-DDoS流量清洗) 说明: DDoS原生基础防护无需购买,默认开启。 当云主机进入黑洞24小时后,黑洞会自动解封。 如果系统监控到攻击流量没有停止,依然超过限定的阈值时,IP会再次被黑洞封堵。 等待自动解封。 DDoS原生高级防护 黑洞解封时间默认为24小时。 等待自动解封。 DDoS高防 联系华为云技术支持提前解封。 建议提升弹性带宽规格避免再次封堵。 可以通过升级规格提升弹性防护带宽上限以提前解封黑洞。
  • 为什么需要黑洞策略? DDoS攻击不仅影响受害者,也会对华为云高防机房造成严重影响。而且DDoS防御需要成本,其中最大的成本就是带宽费用。 带宽是华为云向各运营商购买所得,运营商计算带宽费用时不会把DDoS攻击流量清洗掉,而是直接收取华为云的带宽费用。华为云DDoS原生基础防护(Anti-DDoS流量清洗)服务为用户提供免费的DDoS攻击防御能力,但是当攻击流量超出Anti-DDoS流量清洗阈值时,华为云会采取黑洞策略封堵IP。
  • 修订记录 发布日期 修改说明 2024-04-24 第四十四次正式发布。 新增为什么DDoS高防和ELB的流量不一致?章节。 DDoS高防支持HTTP/2吗?优化描述。 2024-03-15 第四十三次正式发布。 新增如何迁移企业项目下的实例资源?章节。 新增一个域名如何同时接入IPv4和IPv6?章节。 新增域名接入高防后出现“Received fatal alert”报错章节。 2024-02-20 第四十二次正式发布。 Anti-DDoS流量清洗的触发条件是什么?优化描述。 Anti-DDoS流量清洗进行防御时对正常业务有影响吗?优化描述。 2024-01-31 第四十一次正式发布。 DDoS高防是否支持IPv4和IPv6共存?优化描述。 2024-01-05 第四十次正式发布。 新增DDoS高防实例能否同时支持网站和IP接入?章节。 2023-11-29 第三十九次正式发布。 DDoS高防是软件高防还是硬件高防?优化描述。 2023-11-14 第三十八次正式发布。 新增自助解封提示解封配额不足怎么办?章节。 新增如何判断是否有攻击发生?章节。 2023-11-03 第三十七次正式发布。 新增自助解封提示解封配额不足怎么办?章节。 2023-08-08 第三十六次正式发布。 什么是BGP?优化内容描述。 DDoS高防升级规格如何计费?优化举例。 2023-06-27 第三十五次正式发布。 新增高防国际版和国内版有什么区别?章节。 新增DDoS高防开启海外流量封禁后,为什么还会触发弹性带宽计费?章节。 新增同一域名配置多条CC规则,优先触发哪个规则?章节。 2023-06-13 第三十四次正式发布。 新增如何开启Anti-DDoS封堵通知?章节。 2023-06-02 第三十三次正式发布。 新增DDoS防护策略中配置黑白名单后,还需要在WAF防护策略里配置吗?章节。 2022-11-23 第三十二次正式发布。 新增“转发配置下发状态“异常”的问题排查”章节。 2022-11-14 第三十一次正式发布。 修改DDoS高防支持哪些业务端口?章节,增加DDoS高防支持的四层端口范围。 2022-10-25 第三十次正式发布。 新增DDoS高防升级规格如何计费?章节。 2022-07-21 第二十九次正式发布。 修改如何将已防护的源站IP/源站域名切换到其他DDoS高防实例进行防护?章节,优化描述。 2022-07-13 第二十八次正式发布。 下线新增11.4.1.1-“电信联通移动”和“电信联通、BGP”线路的三个高防IP都提供对应的防护能力吗?。 2022-06-06 第二十七次正式发布。 下线新BGP线路。 2022-04-06 第二十六次正式发布。 DDoS调度中心下线“专线回源”和“互联网回源”两种回源方式。 2022-01-24 第二十五次正式发布。 新增DDoS高防、WAF和CDN可以一起使用吗? 2021-12-23 第二十四次正式发布。 新增“配置转发规则时为什么某些端口配置失败”章节。 2021-12-16 第二十三次正式发布。 新增如何退订DDoS原生高级防护? 2021-12-01 第二十二次正式发布。 DDoS原生防护标准版的防护次数是如何统计的?,优化内容描述。 2021-11-26 第二十一次正式发布。 DDoS原生高级防护的业务带宽需要计费吗?,优化内容描述。 2021-11-18 第二十次正式发布。 “DDoS高防常见问题”章节,更新界面截图。 2021-10-14 第十九次正式发布。 新增DDoS高防支持下载/转储防护日志吗? 新增购买DDoS原生防护-全力防基础版后,联动防护还能开启吗? 新增DDoS原生高级防护可以跨区域使用吗? 2021-09-15 第十八次正式发布。 新增11.4.1.1-“电信联通移动”和“电信联通、BGP”线路的三个高防IP都提供对应的防护能力吗?。 2021-09-10 第十七次正式发布。 新增DDoS原生标准版、DDoS原生防护-全力防基础版、DDoS原生防护-全力防高级版功能规格有哪些差异?。 2021-09-06 第十六次正式发布。 非网站类业务如何接入高防服务,优化内容描述。 2021-08-24 第十五次正式发布。 新增DDoS原生高级防护的防护对象有哪些? 新增DDoS原生高级防护能够防护几层攻击? 新增DDoS原生高级防护的流量回切时间是多久? 新增DDoS原生防护标准版的防护次数是如何统计的? 新增DDoS原生高级防护的业务带宽需要计费吗? 新增DDoS调度中心需要购买DDoS高防实例吗? 2021-07-29 第十四次正式发布。 新增DDoS防护支持SDK接入吗? 新增DDoS高防支持HTTP/2吗? 2021-07-14 第十三次正式发布。 IP被黑洞封堵,怎么办?,优化自助解封内容描述。 2021-07-12 第十二次正式发布。 新增海外客户可以访问国内DDoS高防防护的高防IP吗? 2021-05-31 第十一次正式发布。 新增DDoS高防支持哪些业务端口? 2021-05-21 第十次正式发布。 优化“DDoS阶梯调度常见问题”内容描述。 2021-05-12 第九次正式发布。 新增“DDoS阶梯调度常见问题”。 2021-05-06 第八次正式发布。 新增DDoS原生高级防护可以防护IPv6吗? 2021-04-29 第七次正式发布。 Anti-DDoS攻击防护是不是默认开启的?,修改内容描述。 2021-04-27 第六次正式发布。 DDoS原生高级防护中防护IP被黑洞了,如何处理?,修改内容描述。 2021-04-20 第五次正式发布。 新增DDoS原生高级防护如何计费? 2021-04-16 第四次正式发布。 DDoS高防如何计费?,优化内容描述。 2021-04-08 第三次正式发布。 DDoS原生高级防护中防护IP被黑洞了,如何处理?,修改内容描述。 2021-02-01 第二次正式发布。 新增防护域名修改源站IP后,接入状态一直为失败,如何处理? 2020-12-31 第一次正式发布。
  • 支持的云服务器规格 表6 s3型专属计算集群可部署的云服务器规格 规格名称 vCPU 内存(GiB) s3.small.1 1 1 s3.medium.2 1 2 s3.large.2 2 4 s3.xlarge.2 4 8 s3.2xlarge.2 8 16 s3.4xlarge.2 16 32 表7 s3_pro型专属计算集群可部署的云服务器规格 规格名称 vCPU 内存(GiB) s3.medium.4 1 4 s3.large.4 2 8 s3.xlarge.4 4 16 s3.2xlarge.4 8 32 s3.4xlarge.4 16 64 表8 s6型专属计算集群可部署的云服务器规格 规格名称 vCPU 内存(GiB) s6.small.1 1 1 s6.medium.2 1 2 s6.large.2 2 4 s6.xlarge.2 4 8 s6.2xlarge.2 8 16 s6.medium.4 1 4 s6.large.4 2 8 s6.xlarge.4 4 16 s6.2xlarge.4 8 32 表9 s7型专属计算集群可部署的云服务器规格 规格名称 vCPU 内存(GiB) s7.small.1 1 1 s7.medium.2 1 2 s7.large.2 2 4 s7.xlarge.2 4 8 s7.2xlarge.2 8 16 s7.medium.4 1 4 s7.large.4 2 8 s7.xlarge.4 4 16 s7.2xlarge.4 8 32
  • 概述 通用计算型专属计算集群提供了基本水平的硬件性能。技术上采用非绑定CPU共享调度模式,vCPU会根据系统负载被随机分配到空闲的CPU超线程上。在主机负载较轻时,可以提供较高的计算能力,但是在主机负载较重时,可能由于不同实例vCPU争抢物理CPU资源而导致计算性能波动不稳定。能够支撑常规工作负载的云服务器,并能应付云服务器短时负载突增。 通用计算型类别的专属计算集群分为:s3、s3_pro、s6、s6_pro、s7,可用于部署S3型云服务器、S6型云服务器、S7型服务器,提供更好性价比。
  • 专属计算集群规格 表1 s3型专属计算集群规格 专属计算集群类型 CPU数量(Sockets) 物理内核 硬件规格 vCPUs s3 2 22 CPU:Intel® Xeon® SkyLake 6161 v5(主频2.20 GHz,睿频3.00 GHz) Memory:288 GB(=294912 MB) 144 表2 s3_pro型专属计算集群规格 专属计算集群类型 CPU数量(Sockets) 物理内核 硬件规格 vCPUs s3_pro 2 22 CPU:Intel® Xeon® SkyLake 6161 v5(主频2.20 GHz,睿频3.00 GHz) Memory:576 GB(=589824 MB) 144 表3 s6型专属计算集群规格 专属计算集群类型 CPU数量(Sockets) 物理内核 硬件规格 vCPUs s6 2 26 CPU:Intel® Xeon® CascadedLake CPU(主频2.6 GHz,睿频3.5 GHz) Memory:516 GB(=528384 MB) 264 表4 s6_pro型专属计算集群规格 专属计算集群类型 CPU数量(Sockets) 物理内核 硬件规格 vCPUs s6_pro 2 26 CPU:Intel® Xeon® CascadedLake CPU(主频2.6 GHz,睿频3.5 GHz) Memory:702 GB(=718848 MB) 264 表5 s7型专属计算集群规格 专属计算集群类型 CPU数量(Sockets) 物理内核 硬件规格 vCPUs s7 2 38 CPU:Intel® Xeon® IceLake CPU(主频2.8 GHz,睿频3.5 GHz) Memory:926GB(=948224 MB) 390 专属计算集群规格中的vCPUs计算公式:vCPUs=(槽位数 * CPU核数 * 单核线程数 - CPU开销) * CPU超分比 s3型专属计算集群 vCPUs = (2 * 22 * 2 - 16) * 2 = 144 s3_pro型专属计算集群 vCPUs = (2 * 22 * 2 - 16) * 2 = 144 s6型专属计算集群 vCPUs = (2 * 26 * 2 - 16) * 3=264 s6_pro型专属计算集群 vCPUs = (2 * 26 * 2 - 16) * 3=264 s7型专属计算集群 vCPUs = (2 * 38 * 2 - 22) * 3 = 390
  • 自定义脱敏函数 支持用户使用PL/PGSQL语言自定义脱敏函数。 自定义脱敏函数需要严格遵循如下要求: 返回值与脱敏列类型一致。 函数必须可下推。 参数列表除脱敏格式外,只能包含一个脱敏列。 函数仅实现针对特定数据类型的格式化改写功能,不能涉及与其他表对象的复杂关联操作。 不满足前两项中任一项时,创建脱敏策略会报错。不满足后两项中任一项时,可成功创建脱敏策略,但查询执行结果可能会出现不可预知的问题。
  • mask_partial(column_name, mask_digital, mask_from[, mask_to]) 描述:针对数值类型数据,将第mask_from到mask_to位的数字部分脱敏成mask_digital对应的数字。其中,参数mask_to允许缺省,缺省时即脱敏到数据结束位置。参数mask_digital只能取[0,9]区间内的数字。 返回值类型:与入参column_name数据类型相同。
  • mask_partial(column_name [, input_format, output_format], mask_char, mask_from[, mask_to]) 描述:针对字符类型数据,对照指定的输入输出格式,将第mask_from到mask_to位的数字部分脱敏成mask_char指定的字符。 参数说明: input_format 输入格式是由V和F组成的字符序列,与脱敏列数据长度相同。V对应位置的字符可能会被脱敏,F对象位置的字符会被忽略跳过,V字符序列标识脱敏范围。输入输出格式参数适用于定长数据,比如,银行卡号、身份证号、手机号等。 output_format 输出格式是由V和其他任意字符组成的字符序列,与脱敏列数据长度相同。V字符位置与input_format的V位置对应,其他字符位置与input_format的F位置对应,且不会脱敏,通常为数据分隔符。 input_format和output_format可以缺省或指定为空串"",此时,无输入输出格式要求,原始字符序列范围即为脱敏范围。 mask_char 脱敏字符,仅允许长度为1的任意字符。场景的脱敏字符包括"*","#"等。 mask_from 脱敏范围的起始位置,要求大于0。 mask_to 脱敏范围的结束位置,允许缺省。缺省时,即脱敏到原始数据结束位置。 返回值类型:与入参column_name数据类型相同。
  • mask_partial(column_name, mask_field1, mask_value1, mask_field2, mask_value2, mask_field3, mask_value3) 描述:按指定三个时间域做部分脱敏,仅适用于日期或时间类型数据。若mask_value取-1,即此mask_field不脱敏。其中,mask_field可以取"month"、"day"、"year"、"hour"、"minute"、"second"六个时间域之一。各域的取值范围需满足实际时间单位的取值范围。 返回值类型:与入参column_name数据类型相同。
  • 约束与限制 单个GPU卡最多虚拟化成20个GPU虚拟设备。 使用GPU虚拟化后,不支持init容器。 GPU虚拟化支持显存隔离、显存与算力隔离两种隔离模式。单个GPU卡仅支持调度同一种隔离模式的工作负载。 使用GPU虚拟化后,不支持使用Autoscaler插件自动扩缩容GPU虚拟化节点。 XGPU服务的隔离功能不支持以UVM的方式申请显存,即调用CUDA API cudaMallocManaged(),更多信息,请参见NVIDIA官方文档。请使用其他方式申请显存,例如调用cudaMalloc()等。 受GPU虚拟化技术的限制,容器内应用程序初始化时,通过nvidia-smi监测工具监测到的实时算力可能超过容器可用的算力上限。
共100000条