华为云用户手册

  • inlist_rough_check_threshold 参数说明:当enable_csqual_pushdown开启时、过滤条件为IN进行rough check条件下推时,控制IN条件中值的个数的最大值。IN过滤条件中值的个数超过该参数时,将获取IN条件中值的最大/最小值进行条件下推。该参数仅8.2.0.101及以上集群版本支持。 参数类型:SUSET 取值范围:整型,0~10000 默认值:100 如果IN条件在表的单列分布列上进行,可以在DN进行值的过滤,此时IN条件中值的个数的最大值为inlist_rough_check_threshold的DN倍。
  • plan_cache_mode 参数说明:标识在prepare语句中,选择生成执行计划的策略。 参数类型:USERSET 取值范围:枚举类型 auto表示按照默认的方式选择custom plan或者generic plan。 force_generic_plan表示强制走generic plan。 force_custom_plan表示强制走custom plan。 此参数只对prepare语句生效,一般用在prepare语句中参数化字段存在比较严重的数据倾斜的场景下。 custom plan是指对于preapre语句,在执行execute的时候,把execute语句中的参数嵌套到语句之后生成的计划。custom plan会根据execute语句中具体的参数生成计划,这种方案的优点是每次都按照具体的参数生成优选计划,执行性能比较好;缺点是每次执行前都需要重新生成计划,存在大量的重复的优化器开销。 generic plan是指对于preapre语句生成计划,该计划策略会在执行execute语句的时候把参数bind到plan中,然后执行计划。这种方案的优点是每次执行可以省去重复的优化器开销;缺点是当bind参数字段上数据存在倾斜时该计划可能不是最优的,部分bind参数场景下执行性能较差。 默认值:auto
  • max_streams_per_query 参数说明:控制查询计划中Stream节点的数目。(该参数仅8.1.1及以上集群版本支持) 参数类型:SUSET 取值范围:整型,-1~10000 -1,表示查询计划中Stream节点数目无限制。 0~10000,表示查询计划中Stream节点数目超过设定值后报错,查询计划不会被执行。 此参数只控制DN上的Stream节点,不考虑CN上的Gather节点。 此参数不影响Explain查询计划,但是对Explain analyze和Explain performance有影响。 默认值:-1
  • enable_agg_limit_opt 参数说明:标识是否对select distinct col from table limit N场景优化,其中N小于16384时生效, table为列存表。该参数仅8.2.0.101及以上集群版本支持。 参数类型:USERSET 取值范围:布尔型 on表示开启该优化。开启后可保证查询结果来自不同DN,且各个DN无需全部建立全量hash表,可显著提升查询性能。 off表示关闭该优化。 默认值:off
  • debug_group_dop 参数说明:当query_dop取值为0时,针对生成的执行计划划分的以Stream算子为顶点的group,均分配统一的dop并行度。此参数用于人为指定特定group的dop进行性能调优,格式为G1,D1,G2,D2,...,其中:G1,G2为group的ID,可以从日志中获得,D1,D2为指定的dop值,可以为任意正整数。 参数类型:USERSET 取值范围:字符型 默认值:空 该参数仅供内部调优使用,不允许用户进行设置,建议保持默认值。
  • enable_sonic_optspill 参数说明:标识是否优化sonic场景下HashJoin或者HashAgg的下盘文件个数。仅在enable_sonic_hashjoin或enable_sonic_hashagg开启情况下生效。 参数类型:USERSET 取值范围:布尔型 on表示开启下盘文件数优化。 off表示关闭下盘文件数优化。 满足sonic条件下的HashJoin或者HashAgg算子,在关闭此参数(设置为off)时每列会产生1个下盘文件。开启此参数(设置为on)时如果不同列数据类型相似,只会有1个下盘文件(最多5个文件)。 默认值:on
  • expand_hashtable_ratio 参数说明:控制Hash Agg和Hash Join算子执行过程中hash表的大小扩大比例。 参数类型:USERSET 取值范围:浮点型,0, 0.5~10 默认值设置为0时表示hash表大小会根据当前内存进行自适应扩展。 默认值设置为0.5~10之间时,显式的是指定hash表扩大的倍数,通常hash表越大性能越好,但会占用更多内存空间,在内存不足场景可能造成数据提前下盘,带来性能劣化。 默认值:0
  • codegen_strategy 参数说明:标识在表达式codegen化过程中所使用的代码生成优化策略。 参数类型:USERSET 取值范围:枚举类型 partial表示当所计算表达式中即使包含部分未被codegen化的函数时,仍可借助表达式全codegen框架调用LLVM动态编译优化策略。 pure表示当所计算表达式整体可被codegen化时,才考虑调用LLVM动态编译优化策略。 在开启代码生成优化会导致查询性能下降的场景下可以设置此参数为pure,其他场景下建议不改变此参数的默认值partial。 默认值:partial
  • enable_sonic_hashagg 参数说明:标识是否依据规则约束使用基于面向列的hash表设计的Hash Agg算子。 参数类型:USERSET 取值范围:布尔型 on表示在满足约束条件时使用基于面向列的hash表设计的Hash Agg算子。 off表示不使用面向列的hash表设计的Hash Agg算子。 在开启enable_sonic_hashagg,且查询达到约束条件使用基于面向列的hash表设计的Hash Agg算子时,查询对应的Hash Agg算子内存使用通常可获得精简。但对于代码生成技术可获得显著性能提升的场景(enable_codegen打开后获得较大性能提升),对应的算子查询性能可能会出现劣化。 开启enable_sonic_hashagg,且查询达到约束条件使用基于面向列的hash表设计的Hash Agg算子时,在Explain Analyze/Performance的执行计划和执行信息中,算子显示为“Sonic Hash Aggregation”,而未达到该约束条件时,算子名称将显示为“Hash Aggregation”。 默认值:on
  • autoanalyze 参数说明:标识是否允许在生成计划的时候,对于“统计信息完全缺失”或“修改量达到analyze阈值”的表进行统计信息自动收集,当前不支持对外表触发autoanalyze,不支持对带有ON COMMIT [DELETE ROWS|DROP]选项的临时表触发autoanalyze,如需收集,需用户手动执行analyze操作。如果在auto analyze某个表的过程中数据库发生异常,当数据库正常运行之后再执行语句有可能仍提示需要收集此表的统计信息。此时需要用户对该表手动执行一次analyze操作,以同步统计信息数据。 表的修改量达到analyze阈值是指:表的修改量超过autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * reltuples,其中reltuples是pg_class中记录的表的估算行数。 参数类型:SUSET 取值范围:布尔型 on表示允许自动进行统计信息收集。 off表示不允许自动进行统计信息收集。 默认值:on
  • llvm_compile_expr_limit 参数说明:用于标识编译表达式个数的阈值,当表达式个数高于该阈值时,只将阈值之内的表达式使用LLVM编译,高于阈值之外的表达式不使用LLVM编译,同时生成编译告警提示(告警提示需要在执行explain performance前SET analysis_options="on(LLVM_COMPILE)")。 参数类型:USERSET 取值范围:整型,-1~INT_MAX 默认值:500
  • llvm_compile_time_limit 参数说明:LLVM编译时间在执行器运行时间中的占比超过llvm_compile_time_limit所设置的阈值,说明LLVM编译时间占比过高,生成告警提示(告警提示需要在执行explain performance前SET analysis_options="on(LLVM_COMPILE)")。该参数仅8.3.0及以上集群版本支持。 参数类型:USERSET 取值范围:浮点型,0.0~1.0 默认值:0.2
  • plan_mode_seed 参数说明:该参数为调测参数,目前仅支持OPTIMIZE_PLAN和RANDOM_PLAN两种。其中:OPTIMIZE_PLAN表示通过动态规划算法进行代价估算的最优plan,参数值设置为0;RANDOM_PLAN表示随机生成的plan;如果设置为-1,表示用户不指定随机数的种子标识符seed值,由优化器随机生成[1, 2147483647]范围整型值的随机数,并根据随机数生成随机的执行计划;如果用户指定guc参数值为[1, 2147483647]范围的整型值,表示指定的生成随机数的种子标识符seed,优化器需要根据seed值生成随机的执行计划。 参数类型:USERSET 取值范围:整型,-1~ 2147483647 默认值:0 当该参数设置为随机执行计划模式时,优化器会生成不同的随机执行计划,该执行计划可能不是最优计划。因此在随机计划模式下,会对查询性能产生影响,所以建议在升级、扩容、缩容等正常业务操作或运维过程中将该参数保持为默认值0。 当该参数不为0时,查询指定的plan hint不会生效。
  • enable_bloom_filter 参数说明:标识是否允许使用BloomFilter优化。 参数类型:USERSET 取值范围:布尔型 on表示允许使用BloomFilter优化。 off表示不允许使用BloomFilter优化。 默认值:on 适用场景:外表侧同线程包含有HDFS内外表或列存表的HASH JOIN会触发Bloom Filter。 使用限制: JOIN类型仅限于INNER JOIN、SEMI JOIN、RIGHT JOIN、RIGHT SEMI JOIN、RIGHT ANTI JOIN、RIGHT ANTI FULL JOIN。 JOIN内表侧的数据不能超过5万行。 JOIN内表侧关联条件:对于HDFS内外表不能为表达式;对于列存表可以为表达式,但仅限于非JOIN层计算的表达式。 JOIN外表侧关联条件必须为简单列关联。 JOIN内表侧与外表侧关联条件均为简单列关联时,计划层估算必须可以去除1/3以上的数据(仅针对HDFS内外表)。 JOIN不能包含null值关联。 JOIN层未出现下盘。 数据类型: HDFS内外表字段类型支持SMALLINT、INTEGER、BIGINT、REAL/FLOAT4、DOUBLE PRECISION/FLOAT8、CHAR(n)/CHARACTER(n)/NCHAR(n)、VARCHAR(n)/CHARACTER VARYING(n)、CLOB、TEXT。 列存表字段类型支持SMALLINT、INTEGER、BIGINT、OID、"char"、CHAR(n)/CHARACTER(n)/NCHAR(n)、VARCHAR(n)/CHARACTER VARYING(n)、NVARCHAR2(n)、CLOB、TEXT、DATE、TIME、TIMESTAMP、TIMESTAMPTZ,其中字符类型其排序规则必须指定为"C"。
  • enable_extrapolation_stats 参数说明:标识是否允许基于历史统计信息使用推理估算的逻辑。使用该逻辑对于未及时收集统计信息的表可以增大估算准确的可能性,但也存在错误推理导致估算过大的可能性。 参数类型:USERSET 取值范围:布尔型 on表示允许基于历史统计信息使用推理估算的逻辑。 off表示不允许基于历史统计信息使用推理估算的逻辑。 默认值: 若当前集群为低版本升级到8.2.0.100及以上集群版本,为保持和前向兼容,默认值为off。 若当前集群为新装的8.2.0.100及以上集群版本,默认值为on。
  • query_dop 参数说明:用户自定义的查询并行度。 参数类型:USERSET 取值范围:整型,-64-64 [1,64]:打开固定SMP功能,系统会使用固定并行度。 0:打开SMP自适应功能,系统会根据资源情况和计划特征动态为每个查询选取[1,8]之间(x86平台),[1,64]之间(鲲鹏平台)的最优的并行度。 [-64,-1]:打开SMP自适应功能,并限制自适应选取的最大并行度。 对于短查询为主的TP类业务中,如果不能通过CN轻量化或下发语句进行业务的调优,则生成SMP计划的时间较长,建议设置query_dop=1。对于AP类复杂语句的场景,建议设置query_dop=0。 在开启并行查询后,请保证系统CPU、内存、网络、I/O等资源充足,以达到良好效果。 为了避免用户设置不合理的过大值造成性能劣化,系统会计算出该DN可用最大CPU核数,并以此来作为query_dop的上限。如果用户设置query_dop超过4并且同时超过该上限,那么系统会重置query_dop为该上限值。 默认值:1
  • enable_sonic_hashjoin 参数说明:标识是否依据规则约束使用基于面向列的hash表设计的Hash Join算子。 参数类型:USERSET 取值范围:布尔型 on表示在满足约束条件时使用基于面向列的hash表设计的Hash Join算子。 off表示不使用面向列的hash表设计的Hash Join算子。 当前开关仅适用于Inner Join的场景。 在开启enable_sonic_hashjoin,查询对应的Hash Inner算子内存使用通常可获得精简。但对于代码生成技术可获得显著性能提升的场景,对应的算子查询性能可能会出现劣化。 开启enable_sonic_hashjoin,且查询达到约束条件使用基于面向列的hash表设计的Hash Join算子时,在Explain Analyze/Performance的执行计划和执行信息中,算子显示为“Sonic Hash Join”,而未达到该约束条件时,算子名称将显示为“Hash Join”。 默认值:on
  • enable_from_collapse_hint 参数说明:标识是否优先以hint生效的方式重写FROM列表,其次再根据from_collapse_limit、join_collapse_limit参数进行重写。该参数仅8.2.0及以上集群版本支持。 参数类型:USERSET 取值范围:布尔型 on表示优先以hint生效的方式重写FROM列表。 off表示无差别重写FROM列表。 该参数启用时,优化器会优先以hint生效的方式重写FROM列表,但hint是否生效在计划生成后才能知道,因此有可能出现该hint不生效的情况。 该参数关闭时,回退到8.2.0版本之前的计划,即生成计划时不区分表是否有hint。 默认值:on
  • default_statistics_target 参数说明:为没有用ALTER TABLE SET STATIS TICS 设置字段目标的表设置缺省统计目标。此参数设置为正数是代表统计信息的样本数量,为负数时,代表使用百分比的形式设置统计目标,负数转换为对应的百分比,即-5代表5%。采样时,会将default_statistics_target * 300作为随机抽样的大小,例如默认值为100时,会随机读取30000个页面再从中随机取30000条数据来完成随机抽样。 参数类型:USERSET 取值范围:浮点型,-100~10000。 比默认值大的正数数值增加了ANALYZE所需的时间,但是可能会改善优化器的估计质量。 调整此参数可能存在性能劣化的风险,如果某个查询劣化,可以考虑 恢复默认的统计信息。 使用plan hint来调整到之前的查询计划。 当此guc参数设置为负数时,如果计算的采样样本数大于等于总数据量的2%,且用户表的数据量小于1600000时,ANALYZE所需时间相比guc参数为默认值的时间会有所增加。 autoanalyze不支持临时表采样方式设置采样大小,采样过程使用参数默认值。 当强制使用内存方式计算统计信息时,采样大小受maintenance_work_mem参数限制。 默认值:100
  • random_function_version 参数说明:控制analyze在进行数据采样时选取的random函数版本。该参数仅8.1.2及以上版本支持。 参数类型:USERSET 取值范围:枚举类型 0 表示采用C标准库提供的random函数。 1 表示采用优化增强的random函数。 默认值: 若当前集群为低版本升级到8.2.0.100及以上集群版本,为保持和前向兼容,默认值为0。 若当前集群为新装的8.2.0.100及以上集群版本,默认值为1。
  • cursor_tuple_fraction 参数说明:优化器估计游标获取行数在总行数中的占比。 参数类型:USERSET 取值范围:浮点型,0.0~1.0。 比默认值小的值与使用 “fast start” 为游标规划的值相偏离,从而使得前几行恢复的很快而抓取全部的行需要很长的时间。比默认值大的值加大了总的估计的时间。在最大的值1.0处,像正常的查询一样规划游标,只考虑总的估计时间和传送第一行的时间。 默认值:0.1
  • join_collapse_limit 参数说明:根据得出的列表项数来判断优化器是否执行把除FULL JOINS之外的JOIN构造重写到FROM列表中。 参数类型:USERSET 取值范围:整型,1~INT_MAX。 设置为1会避免任何JOIN重排。这样就使得查询中指定的连接顺序就是实际的连接顺序。查询优化器并不是总能选取最优的连接顺序,高级用户可以选择暂时把这个变量设置为1,然后指定它们需要的连接顺序。 比默认值小的数值减少规划时间但也降低了执行计划的质量。 默认值:8
  • constraint_exclusion 参数说明:控制查询优化器使用表约束查询的优化。 参数类型:USERSET 取值范围:枚举类型 on表示检查所有表的约束。 off表示不检查约束。 partition表示只检查继承的子表和UNION ALL子查询。 当constraint_exclusion为on,优化器用查询条件和表的CHECK约束比较,并且在查询条件和约束冲突的时候忽略对表的扫描。 默认值:partition 目前, constraint_exclusion缺省被打开,通常用来实现表分区。为所有的表打开它时,对于简单的查询强加了额外的规划,并且对简单查询没有什么好处。如果不用分区表,可以关掉它。
  • 开启华为云集群控制面日志 创建集群时开启 登录云容器引擎(CCE)控制台。 在控制台上方导航栏,选择集群,单击“购买”。 在“插件选择”页面中,勾选“云原生日志采集” 在“插件配置”页面中,“云原生日志采集插件”选择“自定义安装”,单击“控制面组件日志”开启采集。 采集容器标准输出:开启后,将创建名为default-stdout的日志策略,并上报所有命名空间下的标准输出到 云日志 服务(LTS)。 采集Kubernetes事件:开启后,将创建名为default-event的日志策略,并上报所有命名空间下的Kubernetes事件到云日志服务(LTS)。 配置完成后,单击右下角“规格确认”,在弹出的窗口中单击“确定”,完成创建。
  • 集群控制面组件说明 当前支持收集以下三种类型的控制面日志,每个日志流对应一个Kubernetes控制层面组件。关于这些组件的更多信息,请参见Kubernetes组件。 表1 集群控制面组件说明 类别 组件 日志流 说明 控制面组件日志 kube-apiserver kube-apiserver-{{clusterID}} kube-apiserver组件是暴露Kubernetes API接口的控制层面的组件。更多信息,请参见kube-apiserver。 kube-controller-manager kube-controller-manager-{{clusterID}} kube-controller-manager组件是Kubernetes集群内部的管理控制中心,内嵌了Kubernetes发布版本中核心的控制链路。更多信息,请参见kube-controller-manager。 kube-scheduler kube-scheduler-{{clusterID}} kube-scheduler组件是Kubernetes集群的默认调度器。更多信息,请参见kube-scheduler。
  • 开启本地集群控制面日志 集群未安装云原生日志采集插件 安装云原生日志采集插件时,可通过勾选对应控制面组件,创建默认日志采集策略,采集对应组件日志上报到LTS。安装方法见:启用云原生日志采集插件采集日志。 集群已安装云原生日志采集插件 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 右上角单击“日志采集策略”,将显示当前集群所有上报LTS的日志策略。 单击上方“创建日志策略”,输入要采集的配置信息。 策略模板:若安装插件时未开启控制面组件的采集策略,或者删除了对应的日志策略,可通过该方式重新创建对应组件采集策略。 图1 创建日志策略 日志查看:可直接在“日志中心”页面,“控制面组件日志”页签中查看,选择日志策略配置的日志流名称,即可查看上报到云日志服务(LTS)的日志。 图2 查看日志
  • 查看集群控制面组件日志 通过控制台查看目标集群控制面组件日志 登录容器舰队控制台,单击集群名称进入集群,选择左侧导航栏的“日志中心”。 选择“控制面组件日志”页签,在控制面日志中选中需要查看的日志主题,支持的控制面组件日志请参见集群控制面组件说明。关于该页面的操作详情,请参见LTS用户指南。 通过LTS控制台查看目标集群控制面组件日志 登录LTS控制台,选择“日志管理”页面。 通过集群ID查到对应的日志组,单击该日志组名称,查看日志流,详情请参见LTS用户指南。
  • 配置场景 SparkSQL在进行shuffle操作时默认的分块数为200。在数据量特别大的场景下,使用默认的分块数就会造成单个数据块过大。如果一个任务产生的单个shuffle数据块大于2G,该数据块在被fetch的时候还会报类似错误: Adjusted frame length exceeds 2147483647: 2717729270 - discarded 例如,SparkSQL运行TPCDS 500G的测试时,使用默认配置出现错误。所以当数据量较大时需要适当的调整该参数。
  • 回答 Linux的netcat命令没有与Zookeeper服务器安全通信的选项,所以当启用安全的netty配置时,它不能支持Zookeeper四个字母的命令。 为了避免这个问题,用户可以使用下面的Java API来执行四个字母的命令。 org.apache.zookeeper.client.FourLetterWordMain 例如: String[] args = new String[]{host, port, "stat"}; org.apache.zookeeper.client.FourLetterWordMain.main(args); netcat命令只能用于非安全的netty配置。
  • 回答 由于在删除了大量文件之后,DataNode需要时间去删除对应的Block。当立刻重启NameNode时,NameNode会去检查所有DataNode上报的Block信息,发现已删除的Block时,会输出对应的INFO日志信息,如下所示: 2015-06-10 19:25:50,215 | INFO | IPC Server handler 36 on 25000 | BLOCK* processReport: blk_1075861877_2121067 on node 10.91.8.218:9866 size 10249 does not belong to any file | org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.processReport(BlockManager.java:1854) 每一个被删除的Block会产生一条日志信息,一个文件可能会存在一个或多个Block。当删除的文件数过多时,NameNode会花大量的时间打印日志,然后导致NameNode启动慢。 当出现这种现象时,您可以通过如下方式提升NameNode的启动速度。 删除大量文件时,不要立刻重启NameNode,待DataNode删除了对应的Block后重启NameNode,即不会存在这种情况。 您可以通过hdfs dfsadmin -report命令来查看磁盘空间,检查文件是否删除完毕。 如已大量出现以上日志,您可以将NameNode的日志级别修改为ERROR,NameNode不会再打印此日志信息。 等待NameNode启动完毕后,再将此日志级别修改为INFO。修改日志级别后无需重启服务。
共100000条