关系数据库MySQL版参数调优建议 修改性能参数 若干参数相关说明如下: maxconnections 数据库允许的最大连接数,参数值设置较小时,将会影响数据库建立连接访问。 innodbbufferpoolsize 、 maxconnections 和 backlog参数都依赖于实例的规格,实例规格不同对应其默认值也不同。 联动参数 charactersetserver:如果修改该参数的值, 系统会自动联动调整collationserver、charactersetdatabase,和collationdatabase的取值。一般的,如果字符序charactersetserver为utf8,则collationserver为utf8ci,两者之间存在对应关系。 innodbbufferpoolsize : 该参数受innodbbufferpoolchunksize innodbbufferpoolinstances的影响,最终有效值为两参数乘积的整数倍向上取值。 比如innodbbufferpoolchunksize为128M,innodbbufferpoolinstances为8,那么当innodbbufferpoolsize为4.5G时候,系统会自动向上调节为5G大小(必须大于等于1288M(1G)的整数倍)。 参数修改限制 innodbbufferpoolsize参数值必须是innodbbufferpoolinstances和innodbbufferpoolchunksize参数值乘积的整数倍,非整数倍会自动向上调节为整数倍。 innodbbufferpoolinstances参数值设置大于1时,innodbbufferpoolsize值必须大于等于1GB。 maxpreparedstmtcount:对于MySQL5.7版本,上限值为1048576,对于MySQL 8.0版本,如果内核版本大于等于8.0.18,参数上限值为4194304,超过修改会自动截断为最大值。 其他参数 maxpreparedstmtcount:准备大量的语句会消耗服务器的内存资源,参数设置较小时,业务产生大量的prepare语句,并且可能会超出maxpreparedstmtcount参数限制,出现报错,建议您根据业务情况,调整该参数的值。 如下参数的输入会根据MySQL内核规则对取值进行对应的调整,调整的规则如下所示: (a) keycacheagethreshold会自动调整为100的倍数,设置为非100的整数倍时,会自动向下调节为100的整数倍。 (b) joinbuffersize和keycacheblocksize会自动调整为128的倍数。 (c) querycachesize、querypreallocsize、innodblogbuffersize和maxallowedpacket 、threadstack 会自动调整为1024的倍数。 (d) readbuffersize、readrndbuffersize、binlogcachesize 、binlogstmtcachesize 会自动调整为4096的倍数。 (e) databuffersize、logbuffersize、sharedpoolsize、tempbuffersize 会自动调整为1048576的倍数。 binlogformat:默认设置为row,表示将binlog记录成每一行数据被修改的形式,包括修改前和修改后的数据。该参数限制了进行修改,否则可能影响您的正常使用。 binlogrowsquerylogevents:默认设置为ON,表示binlog在记录events的同时,也会记录原始的SQL语句,方便以后的查询和审计,以及一些ETL等同步工具的兼容性,在大量更新场景下,对性能也有一定的影响。 binlogrowimage:默认设置为FULL,表示无论有没有主键约束或者唯一约束binlog都会记录所有前后镜像. logtimestamps:控制错误日志消息的时间戳时区,以及写入文件的一般查询日志消息和慢日志消息的时间戳时区。默认设置为系统时区,且无法修改。 defaulttimezone:默认设置为"+8:00",可根据您的业务规则自定义修改。 skipnameresolve:默认值为ON,表示跳过域名解析从白名单的IP中判断是否可以建立连接。 innodbstrictmode:用于限制InnoDB的检查策略,默认值为ON,不建议进行修改为OFF来跳过限制检查。 transactionisolation:默认值设置为READCOMMITTED,可根据您的业务场景需要自行修改。 innodbadaptivehashindex:默认设置为OFF,可根据您的业务需要自行修改。 tabledefinitioncache和tableopencache分别默认为2000,可根据实例预计有多少个数据表,最大并发连接数的大小来调节这些参数值大小。 gtidmode:默认值设置为ON,采用GTID模式复制,修改会影响高可用组件,所以不支持修改。 tmptablesize:默认值设置为16M,可以根据业务SQL查询复杂度场景,比如使用复杂的order by ,group by查询,导致使用很多磁盘临时表,查询性能下降,适当增加此值,可以减少磁盘临时表的创建,减少IO。 maxheaptablesize:默认值设置为64M,设置允许用户创建的内存表的最大大小,变量的值用于计算内存表MAXROWS值。