更新时间:2026-04-24 GMT+08:00
RDS for MySQL参数调优建议
数据库参数是数据库系统运行的关键配置信息,设置不合适的参数值可能会影响业务。本文列举了一些重要参数说明,更多参数详细说明,请参见MySQL官网。
通过控制台界面修改MySQL参数值,请参见修改RDS for MySQL实例参数。
lower_case_table_names
- 版本:5.7、5.6
- 参数说明:该参数表示创建库和表时,表名存储是否大小写敏感。
- 是否重启实例:是
- 默认值:1
- 修改建议:修改该参数可能会导致主从复制异常,请谨慎修改。如果必须要修改,请根据以下场景设置数据库参数:
- 默认值“1”,表示创建库和表时,表名默认存储为小写,且不区分大小写。
- 参数值从1变为0的设置顺序:先修改和重启只读库,后修改和重启主库。
- 参数值从0变为1的设置顺序:先修改和重启主库,在主库执行SELECT @@GLOBAL.GTID_EXECUTED。然后在只读库执行SELECT @@GLOBAL.GTID_EXECUTED,直到结果集合大于或者等于主库的SELECT @@GLOBAL.GTID_EXECUTED的结果集合,再修改和重启只读库。
innodb_flush_log_at_trx_commit
- 版本:8.0、5.7、5.6
- 参数说明:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。
- 是否重启实例:否
- 默认值:1
- 修改建议:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,可能导致数据丢失。
- 设置为默认值“1”,是为了保证完整的ACID,每次提交事务时,把事务日志从缓存区写到日志文件中,并刷新日志文件的数据到磁盘上。
- 设置为“0”时,每秒把事务日志缓存区的数据写入日志文件,并刷新到磁盘。
- 设置为“2”时,每次提交事务都会把事务日志从缓存区写入日志文件,每隔一秒左右会刷新到磁盘。
sync_binlog
innodb_large_prefix
- 版本:5.6
- 参数说明:InnoDB表允许单列索引的最大长度。
- 是否重启实例:否
- 默认值:OFF
- 修改建议:在DDL执行时修改该参数,有可能会导致主从复制异常,请谨慎修改。如果必须要修改,请根据以下场景设置数据库参数:
- 参数值从OFF变为ON的设置顺序:先修改只读库,后修改主库。
- 参数值从ON变为OFF的设置顺序:先修改主库,后修改只读库。
innodb_spin_wait_delay
- 版本:8.0、5.7、5.6
- 参数说明:自旋锁轮询间隔的最大延时。
- 是否重启实例:否
- 默认值:无
- 修改建议:依赖于实例的规格,设置过大时,可能会影响数据库的使用。
query_alloc_block_size
- 版本:8.0、5.7、5.6
- 参数说明:查询解析与执行分配的块尺寸。
- 是否重启实例:否
- 默认值:无
- 修改建议:依赖于实例的规格,设置过大时,可能会影响数据库的使用。
character_set_server
max_prepared_stmt_count
- 版本:8.0、5.7、5.6
- 参数说明:准备大量的语句会消耗服务器的内存资源,参数设置较小,会带来潜在的“拒绝服务”的风险,建议您根据业务情况,调整该参数的值。
- 是否重启实例:否
- 默认值:无
- 修改建议:对于MySQL 8.0版本,如果内核版本号低于8.0.18,参数取值上限为1048576,超过会修改失败。
innodb_strict_mode
- 版本:8.0、5.7、5.6
- 参数说明:用于限制InnoDB的检查策略。
- 是否重启实例:否
- 默认值:OFF
- 修改建议:采用了页数据压缩功能后,建议开启该功能。
binlog_rows_query_log_events
- 版本:8.0、5.7、5.6
- 参数说明:该参数控制原始SQL是否记录到Binlog。
- 是否重启实例:否
- 默认值:OFF
- 修改建议:开启时在特定大量数据更新等场景可能存在一定的性能劣化,修改该值应该考虑Otter等工具的兼容性。
innodb_print_all_deadlocks
- 版本:8.0、5.7、5.6
- 参数说明:启用此选项时,有关InnoDB用户事务中所有死锁信息都记录在mysqld错误日志中。
- 是否重启实例:否
- 默认值:OFF
- 修改建议:参数默认关闭是为了避免频繁写日志导致的性能开销。开启后,如果系统中发生大量死锁,会增加日志写入的频率和IO开销,进而影响性能。如果记录所有死锁信息,会增加错误日志的大小,比如在高并发场景下死锁频繁发生时会导致磁盘空间快速消耗。在需要进行死锁分析和排查时,可以临时启用。
与内核规则有关的参数
如下参数的输入会根据内核规则对取值进行对应的调整。调整的规则如下所示:
- key_cache_age_threshold会自动调整为100的倍数。
- join_buffer_size和key_cache_block_size会自动调整为128的倍数。
- query_prealloc_size、max_allowed_packet和thread_stack会自动调整为1024的倍数。
- read_buffer_size、read_rnd_buffer_size、binlog_cache_size、binlog_stmt_cache_size会自动调整为4096的倍数。
父主题: 参数管理