前面介绍了MySQL的最重要的一个内存参数。这次介绍其他的一些参数优化最佳实践。
9de7bb31d0644e7393039222babfed10
gtid-mode
默认值: OFF 建议: ON
控制是否启用基于GTID的日志记录以及日志可以包含的事务类型
enforce_gtid_consistency
默认值: OFF 建议: ON
根据此变量的值, 服务器通过只允许执行可以使用GTID安全记录的语句来强制执行GTID一致性. 在启用基于GTID的复制之前, 必须将此变量设置为ON
binlog_checksum
默认值: CRC32 建议: NONE
启用时, 此变量会导致源为二进制日志中的每个事件写入校验和, 禁用时, 服务器将通过写入和检查每个事件的事件长度(而不是校验和)来验证是否只将完整事件写入二进制日志
disabled_storage_engines
默认值: 空 建议: MyISAM,BLACKHOLE,ARCHIVE,MEMORY
此变量指示哪些存储引擎不能用于创建表或表空间
tmpdir
默认值: /tmp 建议: 单独的比较大的文件系统
临时目录,不要采用默认值,因为根目录一般不太大,容易占满
innodb_buffer_pool_size
默认值: 134217728 最小值: 5242880 最大值: 264-1(64bit)/232-1(32bit) 建议: 对于单独的 MySQL数据库服务器,设置为内存的 80%
对于 InnoDB 表来说, innodb_buffer_pool_size 的作用就相当于 key_buffer_size 对于 MyISAM表的作用一样. InnoDB 使用该参数指定大小的内存来缓冲数据和索引
根据MySQL手册,对于 2G 内存的机器,推荐值是 1G (50%).如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大
binlog_cache_size
默认值: 32768 最小值: 4096 最大值: 18446744073709547520(64bit) 4294963200(32bit) 建议: 1 M
binlog_cache_size 为每个 session 分配的内存,在事务过程中用来存储二进制日志的缓存, 提高记录 bin-log 的效率. 没有什么大事务, dml 也不是很频繁的情况下可以设置小一点,如果事务大而且多, dml 操作也频繁,则可以适当的调大一点. 前者建议是 1M,后者建议是: 即 2-4M
group_concat_max_len
默认值: 1024 最小值: 4 最大值: 18446744073709551615(64bit) 4294967295(32bit) 建议: 4294967295
拼接的字符串的长度字节
log-bin-trust-function-creators
默认值: OFF 建议: ON
当二进制日志启用后,这个变量就会启用. 它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数. 如果设置为0 (默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限. 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制. 如果变量设置为1,MySQL不会对创建存储函数实施这些限制. 此变量也适用于触发器的创建
#skip_name_resolve
默认值: OFF 建议: ON
禁止对外部连接进行DNS解析, 消除DNS解析时间, 但需要所有远程主机用IP访问, 也只能使用IP进行grant赋权, 不能使用主机名, 通常主