PolarDB新增支持将集群规格相关的参数设置为表达式的形式,当集群规格发生变更时,使用表达式设置的参数值会适应规格的变更而自动变化,使集群始终保持最优或最稳定的状态。

注意事项

  • 参数值为数值类型的参数才支持使用参数表达式,参数值为字符类型的参数不支持。

    例如innodb_sort_buffer_size(取值范围为65536~67108864)参数值可以使用表达式设置为{DBNodeClassMemory*3/4},但loose_recycle_bin(取值为ON或OFF)的参数值不支持使用表达式。

    某些参数值也是数值类型,但该参数值并不具备数字含义,例如ssl参数的取值为0或1,其中0表示SSL加密关闭,1表示SSL加密开启,此时不建议使用表达式的方式设置该参数。

  • 集群变配后,使用了参数表达式设置的参数值可能会超出该参数允许的取值范围,此时最终取值将以该参数的取值范围为准。
    例如,设置了innodb_max_undo_log_size(取值范围为[10485760-107374182400])参数值为{DBNodeClassMemory*1/2},那么:
    • 当集群规格的内存升配至256 GB及以上时,{DBNodeClassMemory*1/2}的计算值(256 GB×1/2=128 GB=137438953472 Byte)大于107374182400,此时innodb_max_undo_log_size最终取值即为107374182400。
    • 当集群规格的内存在256 GB以下时,{DBNodeClassMemory*1/2}的计算值符合该参数的取值范围,innodb_max_undo_log_size最终取值即为{DBNodeClassMemory*1/2}的计算值。
    说明 建议您使用参数表达式设置参数前先确认对应参数的取值范围,并要考虑到集群规格升降导致的参数值变动问题。

参数表达式支持类别

PolarDB参数表达式语法的相关支持详见下表。

支持类别 说明 示例
变量
  • DBNodeClassIOPS:计算节点规格的IOPS大小,整数型。
  • DBNodeClassMemory:计算节点规格的内存大小,整数型。默认单位为Byte。
  • DBNodeClassCPU:计算节点规格的CPU核数,整数型。
  • DBNodeClassConnections:实例规格的最大连接数,整数型。
说明 关于计算节点规格列表以及各规格的IOPS、内存、CPU核数以及最大连接数,请参见计算节点规格
{DBNodeClassMemory*3/4}:表示目标参数的取值需等于当前计算节点规格内存的75%。
运算符
  • 表达式语法:使用{}包裹。
  • 除法运算符(/):用被除数除以除数,返回整数型商。如果商是小数,则不四舍五入,只取整数部分。
    语法:
    dividend / divisor
  • 乘法运算符(*):两个乘数相乘,返回整数型积。如果积是小数,则不四舍五入,只取整数部分。
    语法:
    expression * expression
说明 被除数、除数和乘数均不支持小数运算。例如支持{DBNodeClassMemory*3/4},但不支持{DBNodeClassMemory*0.75}
函数
  • 函数GREATEST():返回整数型或者参数公式列表中最大的值。
    语法:
    GREATEST(argument1, argument2,...argumentn)
  • 函数LEAST():返回整数型或者参数公式列表中最小的值。
    语法:
    LEAST(argument1, argument2,...argumentn)
  • 函数SUM():添加指定整数型或者参数公式的值。
    语法:
    SUM(argument1, argument2,...argumentn)
LEAST({DBNodeClassMemory*1/2},10485760):表示目标参数需选取当前计算节点规格内存的50%和10485760 Byte两个值中的较小值。

使用方法

使用表达式来设置参数值的操作步骤与设置集群参数的步骤一致,具体操作步骤,请参见设置集群参数

您只需在修改当前值时,输入对应的表达式即可。例如您可以将innodb_max_undo_log_size当前值修改为{DBNodeClassMemory*1/2}

1