参数表达式

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