
# TaurusDB参数调优建议
数据库参数是数据库系统运行的关键配置信息，设置不合适的参数值可能会影响业务。本章节列举了一些重要参数说明，更多参数详细说明，请参见[MySQL官网](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html)。
通过控制台界面修改TaurusDB参数值，请参见[修改TaurusDB实例参数](https://support.huaweicloud.com/usermanual-taurusdb/taurusdb_configuration.html)。
#### 修改性能参数
#### 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
![](https://support.huaweicloud.com/usermanual-taurusdb/public_sys-resources/caution_3.0-zh-cn.png)
- 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_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低版本对应函数、语法等。
 
