更新时间:2024-10-08 GMT+08:00

FlexusRDS实例参数调优建议

数据库参数是数据库系统运行的关键配置信息,设置不合适的参数值可能会影响业务。本文列举了一些重要参数说明,更多参数详细说明,请参见MySQL官网

通过控制台界面修改Flexus云数据库RDS参数值,请参见修改FlexusRDS实例参数

修改敏感参数

  • “innodb_flush_log_at_trx_commit”

    云数据库默认值:“1”

    作用:该参数控制提交操作在严格遵守ACID合规性和高性能之间的平衡。设置为默认值“1”,是为了保证完整的ACID,每次提交事务时,把事务日志从缓存区写到日志文件中,并刷新日志文件的数据到磁盘上;当设为“0”时,每秒把事务日志缓存区的数据写入日志文件,并刷新到磁盘;如果设为“2”,每次提交事务都会把事务日志从缓存区写入日志文件,每隔一秒左右会刷新到磁盘。

    影响:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,可能导致数据丢失。

    POC建议值“2”

  • “sync_binlog”

    云数据库默认值“1”

    作用:该参数控制MySQL服务器将二进制日志同步到磁盘的频率。设置为默认值“1”,表示MySQL每次事务提交,binlog同步写入磁盘,是最安全的设置;设置为“0”时,表示MySQL不控制binlog的刷新,由文件系统自己控制其缓存的刷新。此时的性能最好,但风险最大,因为一旦断电或操作系统崩溃,在“binlog_cache”中的所有binlog信息都会被丢失。

    影响:参数设置为非默认值“1”时,降低了数据安全性,在系统崩溃的情况下,可能导致binlog丢失。

    POC建议值“1000”

  • “innodb_buffer_pool_size”

    云数据库默认值“规格参数,不同实例规格默认值也不同”

    作用:该参数为Innodb缓冲池大小,用来缓存表和索引数据的内存区域,增加该值可减少磁盘I/O。

    影响:过大的buffer pool可能导致系统崩溃,请谨慎修改。

    POC建议值:32G及以上规格可将其调整至内存的70%~75%。

修改性能参数

  • “innodb_spin_wait_delay”“query_alloc_block_size”依赖于实例的规格,设置过大时,可能会影响数据库的使用。
  • “max_connections”:允许同时连接的客户端总数,参数默认值取决于系统架构。系统内置连接数会占用一部分,不建议设置30以下,以避免并发连接冲突抢占。无法设置为小于当前连接数的值。
  • “innodb_buffer_pool_size”“max_connections”“back_log”参数依赖于实例的规格,实例规格不同对应其默认值也不同。因此,这些参数在用户未设置前显示为“default”
  • “innodb_io_capacity_max”“innodb_io_capacity”参数依赖于磁盘类型,用户未设置前显示为“default”

联动参数

  • “character_set_server”:修改该参数的值, 系统会联动调整“collation_server”的取值。

    字符序“character_set_server”跟字符集“collation_server”存在对应关系,比如针对MySQL 5.7而言,“character_set_server”“latin1”时,对应的“collation_server”默认值为“latin1_swedish_ci”,此时“collation_server”的取值区间为以“latin1”开头的字符序。

  • “innodb_io_capacity”:该参数的取值必须小于等于“innodb_io_capacity_max”的取值。 比如“innodb_io_capacity_max”“2000”, 则“innodb_io_capacity”最大设置为“2000”

参数修改限制

  • “innodb_adaptive_hash_index”“innodb_buffer_pool_size”参数同时修改时,“innodb_adaptive_hash_index”的值由“OFF”改为“ON”会失败。
  • “innodb_buffer_pool_instances”参数值设置为“2”时,“innodb_buffer_pool_size”值必须大于等于1GB。

其他参数

  • “max_prepared_stmt_count”:准备大量的语句会消耗服务器的内存资源,参数设置较小,会带来潜在的“拒绝服务”的风险,建议您根据业务情况,调整该参数的值。
  • 如下参数的输入会根据内核规则对取值进行对应的调整。调整的规则如下所示:
    • “key_cache_age_threshold”会自动调整为100的倍数。
    • “join_buffer_size”“key_cache_block_size”会自动调整为128的倍数。
    • “query_prealloc_size”“innodb_log_buffer_size”“max_allowed_packet ”“thread_stack ”会自动调整为1024的倍数。
    • “read_buffer_size”“read_rnd_buffer_size”“binlog_cache_size”“binlog_stmt_cache_size”会自动调整为4096的倍数。
  • “innodb_strict_mode”:用于限制InnoDB的检查策略,默认值为“OFF”。
  • “binlog_rows_query_log_events”:该参数控制原始SQL是否记录到Binlog。开启时在特定大量数据更新等场景可能存在一定的性能劣化,修改该值应该考虑Otter等工具的兼容性。