数据库参数是数据库系统运行的关键配置信息,设置不合适的参数值可能会影响业务。本文列举了一些重要参数说明,更多参数详细说明,请参见MySQL官网。
通过控制台界面修改TaurusDB参数值,请参见修改TaurusDB实例参数。
修改性能参数
innodb_flush_log_at_trx_commit
- 数据库默认值:1
- 作用:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。
- 参数设置:
- 设置为默认值1时,是为了保证完整的ACID,每次提交事务时,把log buffer中的数据从缓存区写到日志文件中,并刷新日志文件的数据到分布式存储上。
- 当设为0时,InnoDB每秒钟将log buffer中的数据写入日志文件,并刷新到分布式存储上。
- 当设为2时,InnoDB在每次事务提交时将log buffer中的数据更新到文件系统缓存中,每秒钟并刷新到分布式存储上。
- 影响:参数设置为非默认值1时,降低了数据安全性,在系统崩溃的情况下,可能导致丢失1秒钟的事务。
- POC建议值:0,可以显著提升低并发写入性能。
rds_global_sql_log_bin
- 2.0.42.230601及之前的版本默认开启Binlog,可以通过参数log-bin关闭或开启Binlog,修改该参数需要重启。
- 2.0.45.230900及以后版本默认关闭Binlog,可以通过参数rds_global_sql_log_bin动态开启或关闭Binlog。
- 数据库默认值:OFF
- 作用:该参数控制动态开启/关闭Binlog。TaurusDB采用共享存储架构,主节点和只读节点不依赖于Binlog进行数据同步。当用户不需要Binlog时,可以通过此开关动态关闭Binlog。
- 参数设置:
- 设置为默认值OFF时,动态关闭Binlog,不需要重启(在已有的连接和新连接上都生效)。
- 当设置为ON时,动态开启Binlog,不需要重启(在已有的连接和新连接上都生效)。
- 影响:当客户不需要Binlog时,可以动态关闭Binlog,对该实例无影响。
- POC建议值:OFF,可以提升写入性能。
rds_plan_cache
- 2.0.51.240300及以后版本,可以开启此特性。
- rds_plan_cache用的不是innnodb_buffer内存,用的是stmt mem内存区域分配的内存。
- rds_plan_cache_allow_change_ratio:当查询访问的表数据发生变化,例如DML语句导致表数据发生变化,变化比例超过此参数设置的阈值时,plan cache会失效。设置为0,表示不受表数据变化比例的影响,一直生效。
- 数据库默认值:OFF
- 作用:Plan Cache特性是缓存Prepare Statement的执行计划,减少优化器重新生成执行计划来提升查询性能。
- 参数设置:当rds_plan_cache设置为ON,Prepare Statement的执行计划会被缓存,下一次Execute时可以重新利用缓存的执行计划,提升查询性能。
- 影响:提升Prepare Statement语句的查询性能,对sysbench的select_random_ranges测试模型提升效果显著。
- POC建议值:ON,可以提升查询性能。
修改兼容性参数
rds_compatibility_mode
- 数据库默认值:默认参数为空。
- 作用:对社区低版本特有的函数和语法等特性进行兼容。
- 参数设置:取值范围如表1所示。
表1 rds_compatibility_mode模式说明
取值 |
描述 |
ALLOW_DATE_COMPARE_AS_STRING |
允许datetime/date/timestamp类型与转化为datetime/date/timestamp失败的字符串进行比较。 |
ALLOW_DATETIME_TZ_MONTH_DAY_ZERO |
用于控制带时区且月日为0的datetime值可以插入。当该选项启用时,系统会按照 MySQL 8.0.19之前的版本行为处理这些值,即截断时区信息,仅存储日期和时间部分。 |
ALLOW_UNSECURE_CIPHER_FUNC |
用于兼容 MySQL 5.7的部分加密函数,如ENCODE()、DECODE()、ENCRYPT()、DES_ENCRYPT()和 DES_DECRYPT()。 |
ALLOW_RENAMED_DEPRECATED_FUNC |
从 MySQL 5.7 开始,GIS(地理信息系统)函数的名称被重命名。该选项用于兼容 MySQL 5.7 中废弃的 GIS 函数。 |
ALLOW_BACKSLASH_N_AS_NULL |
兼容支持\N关键字解析成NULL,该关键字在MySQL 8.0.1已被废弃。例如:CREATE TABLE n1(a int DEFAULT \N); |
ALLOW_EARLIER_ROWID_FILESORT |
启用该模式后,文件排序将重新引入max_length_for_sort_data判据来选取排序模式,并且在使用rowid排序模式排序时不加载附加字段。 |
ALLOW_GROUP_BY_IMPLICIT_SORTING |
兼容MySQL 5.7中GROUP BY子句的隐式排序。 |
ALLOW_GROUP_BY_ASC_DESC |
兼容MySQL 5.7中GROUP BY子句的显式排序:GROUP BY column [ASC | DESC]。 |
- 影响:TaurusDB会依据不同的参数设定,支持MySQL低版本对应函数、语法等。