云服务器内容精选

  • GaussDB (MySQL兼容模式)数据库GUC参数 当使用MySQL兼容模式,可以设置GUC参数提高GaussDB的兼容性,迁移涉及的GUC参数和影响范围可参见表1 GaussDB(MySQL兼容模式)的GUC参数。 GaussDB数据库 提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。 表1 GaussDB(MySQL兼容模式)的GUC参数 兼容MySQL行为配置项 兼容性配置项 兼容性配置项名字 支持的数据库 是否建议打开 b_format_behavior_compat_options enable_set_variables 仅限主备版会话变量生效。 主备版 是 b_format_version 5.7 数据库平台兼容性行为配置项。 505.0主备版/分布式 是 b_format_dev_version S1 数据库平台迭代小版本兼容性行为配置项。 505.0主备版/分布式 是 S2 数据库平台迭代小版本兼容性行为配置项。 505.1主备版/分布式 是 b_format_dev_version参数设置: GaussDB 8.0企业版,设置为s1。 GaussDB 8.100企业版,设置为s2。 版本号对应参考自建GaussDB内核版本号与UGO界面显示GaussDB版本号对应关系。 S1兼容性配置项所影响的内容: NEW()函数、last_day()函数、date_sub(date, INTERVAL expr unit)、datediff(expr1, expr2)、day()/dayofmonth()、dayname() dayofweek()、dayofyear()、extract(unit FROM date)、from_days(days)、from_unixtime(unix_timestamp[,format])、get_format({DATE | TIME | DATETIME | TIMESTAMP}, {'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL'})、 hour()、makedate(year,dayofyear)、microsecond()、minute()、month()、monthname()、 period_add(period, month_number) TIMESTAMPDIFF、yearweek(date[, mode])、year()、weekofyear(date)、 weekday()、week(date[, mode])、utc_timestamp()、utc_time()、period_diff(p1,p2)、second(). quarter()、str_to_date(str, format)、subdate(expr, days)、time_format(time, format)、ifnull(expr1, expr2)、database()、current_date、current_time、current_timestamp round(arg1, arg2)、localtime([precision])、localtimestamp、dbtimezone、timenow()、numtodsinterval(num, interval_unit)、numtoyminterval(num, interval_unit) new_time(date, timezone1,timezone2)、sysdate([precision])、add_months(d,n)、months_between(d1, d2)、convert_tz(dt, from_tz, to_tz) adddate(date, INTERVAL expr unit)、date_format(date, format) S2兼容性配置项所影响的内容: 包含s1控制的兼容性行为。 影响如下功能: AUTO_INCREMENT自动增长列在导入数据或者进行BATCH INSERT执行计划的插入操作时,对于混合0、NULL和确定值的场景,确定值插入时会立即更新自增计数,后续的0/NULL将在确定值的基础上自增。 like操作符对于匹配串末尾是转义符的场景不再报错。 字符集、字符序的排序规则优先级将发生变更。 影响如下语法: CREATE TABLE table_name LIKE source_table语法。 CREATE TABLE table_name LIKE source_table和“CREATE TABLE table_name (LIKE source_table)”语法不支持指定INCLUDING和EXCLUDING选项,缺省等同于指定INCLUDING ALL。 支持LOAD DATA语法,gs_loader中部分与LOAD DATA语法一致的语法功能会发生变化。 支持set names指定collate子句。 涉及ALTER TABLE,RENAME TABLE等更改表名的语法,影响场景如:新表名对应字符串开头为“#MySQL50#”,且其后有其他字符,“#MySQL50#”将被忽略。 父主题: GaussDB数据库设置GUC参数对迁移的影响
  • GUC参数设置 GUC参数设置有两种方式: 方式一:集群创建成功后,用户可以登录GaussDB(DWS) 管理控制台,根据实际需要修改集群的数据库参数。 具体操作请参见修改数据库参数。 方式二:成功连接集群后,通过SQL命令的方式设置SUSET或USERSET类型的参数。 修改指定数据库,用户,会话级别的参数。 设置数据库级别的参数 1 ALTER DATABASE dbname SET paraname TO value; 在下次会话中生效。 设置用户级别的参数 1 ALTER USER username SET paraname TO value; 在下次会话中生效。 设置会话级别的参数 1 SET paraname TO value; 修改本次会话中的取值。退出会话后,设置将失效。
  • 操作步骤 设置参数,以设置explain_perf_mode参数为例。 查看explain_perf_mode参数。 1 2 3 4 5 SHOW explain_perf_mode; explain_perf_mode ------------------- normal (1 row) 设置explain_perf_mode参数。 使用以下任意方式进行设置: 设置数据库级别的参数 1 ALTER DATABASE gaussdb SET explain_perf_mode TO pretty; 当结果显示为如下信息,则表示设置成功。 ALTER DATABASE 在下次会话中生效。 设置用户级别的参数 1 ALTER USER dbadmin SET explain_perf_mode TO pretty; 当结果显示为如下信息,则表示设置成功。 ALTER USER 在下次会话中生效。 设置会话级别的参数 1 SET explain_perf_mode TO pretty; 当结果显示为如下信息,则表示设置成功。 SET 检查参数设置的正确性。 1 2 3 4 5 SHOW explain_perf_mode; explain_perf_mode -------------- pretty (1 row)
  • 参数类型和值 GaussDB(DWS)的GUC参数类型分为以下五类: SUSET,数据库管理员参数。设置后立即生效,无需重启集群。若在当前会话中设置该类型参数仅当前会话生效。 USERSET,普通用户参数。设置后立即生效,无需重启集群。若在当前会话中设置该类型参数仅当前会话生效。 POSTMASTER,数据库服务端参数。设置后需要重启集群才能生效,确认修改后系统会提示集群状态为待重启,建议在非业务高峰期手动重启集群,使参数生效。 SIGHUP,数据库全局参数。设置后全局生效,无法会话级生效。 BACKEND,数据库全局参数。设置后全局生效,无法会话级生效。 所有的参数名称不区分大小写。 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 枚举类型的取值由系统表pg_settings的enumvals字段取值所定义。 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 参数的默认单位由系统表pg_settings的unit字段所定义。 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。
  • approx_count_distinct_precision 参数说明:该参数表示HyperLogLog++ (HLL++)算法中分桶个数,可以用来调整approx_count_distinct聚集函数的误差率。桶的个数会影响distinct值估算的精度,桶的个数越多,误差越小。误差范围为:[-1.04/2log2m*1/2,+1.04/2log2m*1/2]。该参数仅8.3.0及以上集群版本支持。 参数类型:USERSET 取值范围:整型,10~20。 默认值:17
  • show_acce_estimate_detail 参数说明:在GaussDB(DWS)集群使用加速集群场景下(即acceleration_with_compute_pool设置为on),控制explain命令是否显示用于评估执行计划下推到加速集群的评估信息。评估信息一般用于运维人员在维护工作中使用,因此该参数默认关闭,此外为了避免这些信息干扰正常的explain信息显示,只有在explain命令的verbose选项打开的情况下才显示评估信息。 参数类型:USERSET 取值范围:布尔型 on表示可以在explain命令的输出中显示评估信息。 off表示不在explain命令的输出中显示评估信息。 默认值:off
  • gc_fdw_verify_option 参数说明:在协同分析特性中,控制是否启用结果集行数校验逻辑。该参数仅8.1.3.310及以上集群版本支持。 参数类型:USERSET 取值范围:布尔型 on表示开启结果集行数校验逻辑,额外发送select count语句获取预期行数,与实际获取结果集进行比对。 off表示关闭结果集行数校验逻辑,仅获取所需结果集。 默认值:on 该参数开启时性能会有轻微劣化,性能敏感场景可通过关闭该参数提升性能。 结果集行数校验失败时会抛出异常,可通过设置参数log_min_messages=debug1和logging_module='on(COOP_ANALYZE)'来打开协同分析日志。
  • full_group_by_mode 参数说明:结合disable_full_group_by_mysql使用,用于控制disable_full_group_by_mysql语法开关打开后的两种不同行为。 参数类型:USERSET 取值范围:字符串 nullpadding表示对于非聚集列而言,对该列NULL值进行填充,取该列非NULL值,结果集可能为不同行。 notpadding表示对于非聚集列而言,不处理NULL值,取该行整行数据,非聚集列结果集为随机的一行。 默认值:notpadding 该参数生效前提为MySQL兼容库下打开disable_full_group_by_mysql,且查询中出现非聚集列场景生效。该参数的两种行为也仅针对查询中的非聚集列生效。
  • hll_default_regwidth 参数说明:该参数可以指定hll数据结构每个桶的位数,该值越大,hll所占内存越高。hll_default_regwidth和hll_default_log2m可以决定当前hll能够计算的最大distinct value。具体对应关系可以参见表1 hll_default_log2m和hll_default_regwidth与当前能计算的最大distinct value值的关系。 参数类型:USERSET 取值范围:整型,1~5。 默认值:5 表1 hll_default_log2m和hll_default_regwidth与当前能计算的最大distinct value值的关系 log2m regwidth = 1 regwidth = 2 regwidth = 3 regwidth = 4 regwidth = 5 10 7.4e+02 3.0e+03 4.7e+04 1.2e+07 7.9e+11 11 1.5e+03 5.9e+03 9.5e+04 2.4e+07 1.6e+12 12 3.0e+03 1.2e+04 1.9e+05 4.8e+07 3.2e+12 13 5.9e+03 2.4e+04 3.8e+05 9.7e+07 6.3e+12 14 1.2e+04 4.7e+04 7.6e+05 1.9e+08 1.3e+13 15 2.4e+04 9.5e+04 1.5e+06 3.9e+08 2.5e+13
  • join_num_distinct 参数说明:控制应用场景中Join列或表达式的默认distinct值。 参数类型:USERSET 取值范围:双精度浮点型,大于或等于-100,客户端显示小数时可能会有截断。 值大于0时,表示使用该值作为默认distinct值。 值大于等于-100且小于0时,表示估算默认distinct时使用的百分比。 值为0时,表示使用200作为默认distinct值。 默认值:-20
  • zero_damaged_pages 参数说明:控制检测导致GaussDB(DWS)报告错误的损坏的页头,中止当前事务。 参数类型:SUSET 取值范围:布尔型 on表示打开控制功能。 off表示关闭控制功能。 设置为on时,系统报告一个警告,把损坏的页面填充为零然后继续处理。该行为会破坏数据,即被损坏页面上的所有行。但是它允许绕开损坏页面然后从表中存在的未损坏页面上继续检索数据行。因此该参数在硬件或者软件错误导致的数据损坏中进行恢复是有作用的。通常不建议该参数设置为on,除非不需要从损坏的页面中恢复数据。 对于列存表,会将整个CU跳过然后继续处理。支持的场景包括crc校验失败、magic校验失败以及读取的CU长度错误。 默认值:off
  • cost_model_version 参数说明:控制应用场景中估算时cost使用的模型。该参数的影响范围主要涵盖:表达式distinct估算、HashJoin代价模型、行数估算、重分布时分布键的选择及Aggregate的行数估算等。 参数类型:USERSET 取值范围:0、1、2、3、4 0表示使用原始的cost估算模型。 1表示在0的基础上,使用增强的表达式distinct估算、HashJoin代价模型、行数估算、重分布时分布键的选择及Aggregate的行数估算。 2表示在1的基础上,使用随机性更优的analyze采样算法,以提高统计信息准确性。 3表示在2的基础上,优化大集群场景下的broadcast代价估算,以便优化器选择更优计划。该选项仅8.3.0及以上集群版本支持。 4表示在3的基础上,优化了hashjoin并行化代价、倾斜代价、列存索引有序性代价的代价估算以及coalesce表达式的行数估算,并支持子查询常量输出列进行join时的倾斜优化识别。 默认值:1
  • explain_perf_mode 参数说明:此参数用来指定explain的显示格式。 参数类型:USERSET 取值范围:normal、pretty、summary、run normal:代表使用默认的打印格式。 pretty:代表使用GaussDB(DWS)改进后的新显示格式。新的格式层次清晰,计划包含了plan node id,性能分析简单直接。 summary:是在pretty的基础上增加了对打印信息的分析。 run:在summary的基础上,将统计的信息输出到csv格式的文件中,以便于进一步分析。 默认值:pretty
  • cost_param 参数说明:该参数用于控制在特定的客户场景中,使用不同的估算方法使得估算值与真实值更接近。此参数可以同时控制多种方法,与某一方法对应的位做与操作,不为0表示该方法被选择。 当cost_param & 1 不为0,表示对于求不等值连接选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估算中更加准确,V300R002C00版本开始,已弃用cost_param & 1 不为0时的路径,默认选择更优的估算公式; 当cost_param & 2 不为0,表示求多个过滤条件(Filter)的选择率时,选择最小的作为总的选择率,而非两者乘积,此方法在过滤条件的列之间关联性较强时估算更加准确; 当cost_param & 4 不为0,表示在进行stream节点估算时,选用调试模型,该模型不推荐用户使用。 当cost_param & 16不为0,表示在计算两个及以上过滤条件或Join条件的综合选择率时,采用介于完全相关和完全不相关之间的一种模型,过滤条件较多时倾向于相关性较强的模型。 参数类型:USERSET 取值范围:整型,1~INT_MAX 默认值:16
  • rewrite_rule 参数说明:标识开启的可选查询重写规则。有部分查询重写规则是可选的,开启它们并不能总是对查询效率有提升效果。在特定的客户场景中,通过此GUC参数对查询重写规则进行设置,使得查询效率最优。 此参数可以控制查询重写规则的组合,比如有多个重写规则:rule1、rule2、rule3、rule4。可以设置: set rewrite_rule=rule1; --启用查询重写规则rule1 set rewrite_rule=rule2,rule3; --启用查询重写规则rule2和rule3 set rewrite_rule=none; --关闭所有可选查询重写规则 参数类型:USERSET 取值范围:字符串 none:不使用任何可选查询重写规则 lazyagg:使用Lazy Agg查询重写规则(消除子查询中的聚集运算) magicset:使用Magic Set查询重写规则(从主查询中下推条件到提升的子链接) uniquecheck:使用Unique Check重写规则(允许目标列不含聚集函数的表达式子链接场景提升,需在子链接按关联列聚集后目标列值唯一才能开启,建议专业调优人员使用)。 disablerep:使用禁止复制表的子链接提升规则(针对复制表禁止子链接提升)。 projection_pushdown:使用Projection Pushdown重写规则(子查询中消除父查询不使用的列)。 or_conversion:使用OR转换重写规则(消除执行效率低下的关联OR条件)。 plain_lazyagg:使用Plain Lazy Agg查询重写规则(消除单子查询中的聚集操作)。该选项仅8.1.3.100及以上集群版本支持。 eager_magicset:使用eager_magicset查询重写规则(从主查询中下推条件到子查询)。该选项仅8.2.0及以上集群版本支持。 casewhen_simplification:使用casewhen语句改写的重写规则,开启后对(case when xxx then const1 else const2)=const1场景进行改写。该选项仅8.3.0及以上集群版本支持。 outer_join_quality_imply:支持外连接中外表的表达式过滤条件(非等值,等值过滤条件已经支持)通过等值关联条件传递并下推到内表,减少内表扫描返回数据量。该选项仅8.3.0及以上集群版本支持。 inlist_merge:使用inlist_or_inlist查询重写规则,支持基表相同列的or语句合并,开启后对(where a in (list1) or a in (list2))进行合并改写,合并后可支持inlist2join。该选项仅8.3.0及以上集群版本支持。 默认值:magicset, or_conversion, projection_pushdown, plain_lazyagg