一、参数配置总览
| 参数名称 | 默认值 | 是否需要重启 | 主要作用 | 推荐配置 |
| character_set_server | UTF8 | 是 | 服务器默认字符集 | 根据业务需求选择 |
| sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | 否 | SQL 语法和数据校验规则 | 根据业务场景及开发习惯配置 |
| long_query_time | 1 | 否 | 慢查询界定时间 | 根据客户业务场景及性能敏感度调整 |
| tdsql_use_online_copy_ddl | ON | 否 | DDL 在线复制模式开关 | 保持默认开启 |
| tdstore_txn_max_entry_size | 64MB | 否 | 单行记录大小限制 | 保持默认配置 |
| tdsql_enable_stale_read | ON | 否 | 闪回查询功能开关 | 建议开启 |
二、character_set_server
·默认值:UTF8
·是否需要重启:是
·作用:用于配置 TDSQL Boundless 服务器的默认字符集。
| 字符集 | 特点 | 适用场景 |
| LATIN1 | 英文字符,一个字符占用一个字节。 | 纯英文应用。 |
| UTF8 | 国际编码,包含全世界所有国家需要用到的字符。一个字符占用三个字节。 | 多语言支持,通用性强。 |
| UTF8MB4 | UTF8超集,完全向下兼容,一个字符占用四个字节。 | 支持 emoji 等特殊字符。 |
| GBK | 双字节字符集,即不论中、英文字符均使用双字节来表示。 | 简体中文环境。 |
| GB18030 | 最新的国家标准中文字符集,是 GBK 超集,除了 GBK 的所有字符外,还包含了更多的汉字和中国少数民族文字。 | 全面中文字符支持。 |
| UJIS | 日文编码。英文字符占用一个字节,日文字符(汉字、假名等)占用两个字节。 | 仅限日文环境,特别是需要兼容旧的日文系统。 |
·建议:购买实例后,根据业务所需要支持的数据格式选择适合的字符集,确保客户端与服务器端设置相同的字符集,避免因字符集设置不正确而引发乱码的问题和不必要的重启操作。
三、sql_mode
·默认值:STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
注意:说明:
注意:TDSQL Boundless 的 sql_mode 默认值与 MySQL 8.0不同,采用更宽松的配置。MySQL 8.0的默认参数值为 ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION。TDSQL Boundless 未启用日期校验(NO_ZERO_DATE 等)和 GROUP BY 严格检查,兼容性更好,但数据校验较宽松。如需更严格的数据校验,请手动调整 sql_mode。
·是否需要重启:否
·作用:TDSQL Boundless 可以运行在不同的 SQL 模式下,SQL 模式定义了应该支持的 SQL 语法、数据校验等。
TDSQL Boundless 默认启用的模式如下:
·STRICT_TRANS_TABLES:启用事务表严格模式,用于控制如何处理无效或缺失的数据值;如果插入无效值,或插入超范围值、字符串超长、NOT NULL 列缺失等场景,事务表严格模式下报错,拒绝执行。NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO 模式定义了无效数据的含义,STRICT_TRANS_TABLES 定义了遇到无效数据如何处理。
·NO_ENGINE_SUBSTITUTION:使用的存储引擎被禁用或者未编译则抛出错误。
以下为可选模式,你可根据业务需求通过 SET GLOBAL sql_mode 手动追加:
·NO_ZERO_IN_DATE 是否允许日期中的月份和日包含0,且受是否开启严格模式的影响。
·NO_ZERO_DATE 数据库不允许插入零日期,且受是否开启严格模式的影响。
·ERROR_FOR_DIVISION_BY_ZERO 在严格模式下,INSERT 或 UPDATE 过程中,如果数据被零除,则产生错误而非警告,而非严格模式下,数据被零除时返回 NULL。
·ONLY_FULL_GROUP_BY 表示在 GROUP BY 聚合操作时,如果在 SELECT 中的列、HAVING 或者 ORDER BY 子句的列,必须是 GROUP BY 中出现或者依赖于 GROUP BY 列的函数列。
注意:说明:
注意:sql_mode 参数的调整为全局生效。但需注意,其参数值中 ONLY_FULL_GROUP_BY 配置修改后,如果旧连接是长连接,则还是 session 级别的,因此,ONLY_FULL_GROUP_BY 配置修改后针对新建连接生效,旧连接不一定生效,需断开重连。
·NO_AUTO_CREATE_USER 禁止 GRANT 创建密码为空的用户。
·建议:由于不同的 SQL 模式支持不同的 SQL 语法,建议根据你的业务场景及开发习惯进行合理的配置。
注意:若实例已创建灾备关系(主实例或备实例),则不允许修改全局 sql_mode 参数,以防止主备 sql_mode 不一致导致灾备同步异常中断。
四、long_query_time
·默认值:1
·是否需要重启:否
·作用:用于指定慢查询的界定时间,默认值为1s。当某个查询执行时间为1s及以上,该查询的执行情况会记录于慢日志中,便于过后对慢查询进行分析。
·建议:基于客户业务场景及性能敏感度不同,建议根据各自业务场景设置合理的值,以便事后进行性能分析。
五、tdsql_use_online_copy_ddl
·默认值:ON
·是否需要重启:否
·作用:用于控制是否启用 TDSQL Boundless 的 DDL 在线复制模式。从 V21.6.3.0 版本起,无主键表也已支持 Online Copy DDL,设置该参数为 ON 即可生效。从 V21.6.4.0 版本起,无主键表也已支持 Online 增加主键操作,设置该参数为 ON 即可生效。
·ON(默认值):开启 DDL 在线复制模式后,DDL 操作不锁表,不阻塞业务读写。
·OFF:关闭 DDL 在线复制模式,将回退为 MySQL 原生的 Copy DDL,即非 Inplace 或非 Instant 的 DDL 运行期间将阻塞该表的写入请求。
·建议:保持默认配置,默认开启。
以下操作即使在 tdsql_use_online_copy_ddl 为 ON 时也不支持 Online 执行,如需继续执行 DDL,需先通过 set tdsql_use_online_copy_ddl = 0 临时关闭,再重新执行:
·有主键表删除主键(Drop Primary Key)
·无主键分区表修改分区规则(如修改分区数、分区算法等)
·无主键非分区表转换为分区表
·涉及触发器的表
六、tdstore_txn_max_entry_size
·默认值:67108864
·是否需要重启:否
·作用:用于控制单行记录的大小,默认为64MB。当写入的单行记录大小超过64MB时,语句会执行失败。
·建议:保持默认配置。如果单行记录大小超过64MB,可联系腾讯云技术支持评估调整。
七、tdsql_enable_stale_read
·默认值:ON
·是否需要重启:否
·作用:用于控制允许闪回查询功能的开关。
·建议:建议默认开启闪回查询功能,便于在误更新场景下通过闪回查询快速查询数据的历史版本并进行恢复。