参数配置建议

最近更新时间:2024-10-18 14:14:22

我的收藏
云数据库 MySQL 已在官方的默认值基础上进行了优化,但基于客户不同的业务场景,在购买实例后,建议根据您的业务场景对如下参数进行合理的配置:

character_set_server

默认值:UTF8
是否需要重启:是
作用:用于配置 MySQL 服务器的默认字符集。云数据库 MySQL 提供4种字符集,分别为 LATIN1、UTF8、GBK、UTF8MB4,其中 LATIN1 支持英文字符,一个字符占用一个字节;UTF8 包含全世界所有国家需要用到的字符,是国际编码,通用性强,一个字符占用三个字节;GBK 的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示;UTF8MB4 作为 UTF8 的超集,完全向下兼容,一个字符占用四个字节,且支持 emoji 表情。
建议:购买实例后,根据业务所需要支持的数据格式选择适合的字符集,确保客户端与服务器端设置相同的字符集,避免因字符集设置不正确而引发乱码的问题和不必要的重启操作。

lower_case_table_names

默认值:0
是否需要重启:是
作用:创建数据库及表时,存储与查询时是否大小写敏感。该参数可以设置的值为0、1,默认的参数值为0,表示创建数据库及表时,存储与查询均区分大小写,反之则不做区分。
建议:数据库 MySQL 默认大小写敏感,请根据您的业务需求及使用习惯进行合理的配置。

sql_mode

默认值:
NO_ENGINE_SUBSTITUTION(5.6版本),ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION(5.7版本)
是否需要重启:否
作用:MySQL 可以运行在不同 sql 模式,sql 模式定义了 mysql 应该支持的 sql 语法、数据校验等。
5.6版本的默认参数值为NO_ENGINE_SUBSTITUTION,表示使用的存储引擎被禁用或未编译则抛出错误。
5.7、8.0版本的默认参数值为ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION 其中:
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 配置修改后针对新建连接生效,旧连接不一定生效,需断开重连。
STRICT_TRANS_TABLES为启用严格模式;NO_ZERO_IN_DATE 是否允许日期中的月份和日包含 0,且受是否开启严格模式的影响。
NO_ZERO_DATE数据库不允许插入零日期,且受是否开启严格模式的影响。
ERROR_FOR_DIVISION_BY_ZERO在严格模式下,INSERT 或 UPDATE 过程中,如果数据被零除,则产生错误而非警告,而非严格模式下,数据被零除时 MySQL 返回 NULL。
NO_AUTO_CREATE_USER禁止 GRANT 创建密码为空的用户。
NO_ENGINE_SUBSTITUTION使用的存储引擎被禁用或者未编译则抛出错误。
建议:由于不同的 SQL 模式支持不同的 SQL 语法,建议根据您的业务场景及开发习惯进行合理的配置。

long_query_time

默认值:1
是否需要重启:否
作用:用于指定慢查询的界定时间,默认值为1s。当某个查询执行时间为1s及以上,该查询的执行情况会记录于慢日志中,便于过后对慢查询进行分析。
建议:基于客户业务场景及性能敏感度不同,建议根据各自业务场景设置合理的值,以便事后进行性能分析。