本文介绍了支持可使用表达式配置的参数和表达式的配置规则。
在 MySQL 实例的可修改参数中,部分参数的值跟实例的规格有较大关联。在变更实例配置后,为追求实例的最佳运行状态,需要根据实例新的规格重新为这些参数设定运行值。为提升用户的使用体验,提高 MySQL 实例的工作效率,云数据库 MySQL 版为这些参数提供了配置为表达式的能力。
配置为表达式是指支持将这些参数的运行值配置为与实例规格相关的表达式。配置为表达式后,云数据库 MySQL 版会根据实例规格按照表达式自动计算结果,并将计算结果设定为参数的运行值。支持表达式配置的参数及默认的表达式如下表所示:
参数名称 | 表达式示例 | 表达式说明 |
---|---|---|
innodb_buffer_pool_instances | {LEAST(DBInstanceMemory/1073741824, 8)} | 取实例内存数/1073741824 和 8 之间的最小值作为参数运行值。 |
innodb_buffer_pool_size | {DBInstanceMemory*1/2} | 取实例内存数/2 的值作为参数运行值。 |
innodb_page_cleaners | {LEAST(DBInstanceMemory/1073741824, 8)} | 取实例内存数/1073741824 和 8 之间的最小值作为参数运行值。 |
|
| 取 |
|
| 取 |
thread_cache_size | {LEAST(DBInstanceMemory/1073741824*512, 2048)} | 取实例内存数/1073741824*512 和 2048 之间的最小值作为参数运行值。 |
loose_thread_pool_size | {MAX(DBInstanceCpu, 2)} | 取实例 CPU 核数 和 2 之间的最大值作为参数运行值。 |
max_connections | {MAP(DBInstanceCpu, DBInstanceMemory)} | 取实例 CPU 核数 和 实例内存数 所对应的规格在产品规格列表中的最大连接数作为参数运行值。 |
table_open_cache | {LEAST(DBInstanceMemory/1073741824*256, 2048)} | 取实例内存数/1073741824*256 和 2048 之间的最小值作为参数运行值。 |
table_open_cache_instances | {LEAST(DBInstanceMemory/1073741824, 16)} | 取实例内存数/1073741824 和 16 之间的最小值作为参数运行值。 |
|
| 取 |
在修改实例参数、批量修改实例参数、创建参数模板时,可以将参数运行值配置为表达式。
支持表达式配置的参数依然支持将运行值设定为具体的值。但在设定为具体值时,不同的参数在变更实例配置后设定运行值的规则不同。部分参数会在变更实例配置后继续按照表达式计算和设定新的运行值,部分参数在变更实例配置后继续使用变更实例配置前设定的具体值。
重新计算运行值的参数有:
innodb_buffer_pool_instances
innodb_buffer_pool_size
read_buffer_size
table_definition_cache
thread_cache_size
loose_thread_pool_size
join_buffer_size
沿用变配前设定值的参数有:
innodb_page_cleaners
max_connections
table_open_cache
table_open_cache_instances
以下参数的值在配置时应满足相应的规则。如不满足规则,会按照表达式的规则在满足参数取值范围的前提下向下取整。
innodb_buffer_pool_size
的值应为 1024 的整数倍,且应大于等于实例内存的 50%,小于等于实例内存的 75%。
read_buffer_size
的值应为 4096 的整数倍。
join_buffer_size
的值应为 128 的整数倍。
在为实例参数配置的表达式时,要求该实例应用的参数模板中已为该参数配置了表达式的运行值。 云数据库 MySQL 版提供的系统模板已为支持表达式配置的参数运行值添加了表达式,如您创建的实例应用了系统模板,这些参数的运行值会自动根据表达式进行计算。
参数的表达式支持使用的变量和函数如下:
变量
DBInstanceMemory
:实例主节点的内存数。
DBInstanceCpu
:实例主节点的 CPU 核数。
说明
DBInstanceMemory 和 DBInstanceCpu 为实例主节点的内存数和核数。即使该参数的生效范围为只读节点,也会按照实例主节点的规格进行取值,再按照表达式计算运行值。
函数
函数 | 函数说明 | 使用示例 |
---|---|---|
LEAST(x, y) | 取 x 与 y 两者间的较小值。 | {LEAST(DBInstanceMemory/1073741824*512, 2048)} |
MAX(x, y) | 取 x 与 y 两者间的较大值。 | {MAX(DBInstanceCpu, 2)} |
MAP(x, y) | 按照 x 与 y 在产品规格列表映射,对最大连接数取值。 | {MAP(DBInstanceCpu, DBInstanceMemory)} |