information_schema_stats_expiry
参数由8.03版本引入,是可以动态设置的global、session级参数。默认值为86400,可以设置为0到315360000之间热任意整数。
Information_schema库中有一些列提供表的统计数据,统计数据会随着表中内容的变化进行更新。默认情况下MySQL检索mysql.index_stats 和mysql.table_stats两个字典表进行表信息检索,这样远比从存储引擎层检索相关信息高效的多。如果需要的表统计信息没有被缓存或者已经过期,则会从存储引擎获取相关统计信息并缓存到mysql.index_stats 和mysql.table_stats两个表中,在表统计信息过期之前,后来的查询都会使用此缓存信息。每个session可以独立设置information_schema_stats_expiry,默认值是86400秒也就是24小时,此数值最大可以设置为一年;如果想要更新某张表的统计信息执行ANALYZE TABLE即可;如果每次查询都想获取最新的统计信息,将此值设置成0即可,MySQL每次都会跳过mysql.index_stats 和mysql.table_stats两个字典表直接通过存储引擎获取统计信息。
innodb_dedicated_server
参数在8.03版本中引入,是一个只能在启动时设置的global级参数。此参数设置为ON时,MySQL会根据检测到的内存大小设置innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_method三个参数。有了这个参数我们就不用再写脚本根据内存大小去修改配置文件的这三个参数了,运维自动化又省了一步。当服务器MySQL与其他应用共享服务器内存时建议设置为OFF。那么MySQL具体的设置策略是什么那?
innodb_buffer_pool_size:
Detected Server Memory Buffer Pool Size
小于1G 128MiB (the innodb_buffer_pool_size default)
小于等于 4G Detected server memory 0.5
大于 4G Detected server memory 0.75
innodb_log_file_size:
Detected Server Memory Log File Size
小于等于4GB 128MiB
小于等于8GB 512MiB
小于等于16GB 1024MiB
大于16GB 2048MiB
innodb_flush_method
当开启 innodb_dedicated_server时,刷盘方式会采用O_DIRECT_NO_FSYNC ,O_DIRECT_NO_FSYNC 不可用时将会采用默认的刷盘