Mysql 5.7参数优化

来源:这里教程网 时间:2026-03-03 12:55:09 作者:

一、数据刷盘innodb_io_capacity = 200              #Master线程每秒/10秒刷新脏页到磁盘(合并插入缓冲 )innodb_io_capacity_max = 2000    #Master线程每秒/10秒刷新脏页最多到磁盘 innodb_max_dirty_pages_pct = 75       #脏页达到Buffer Pool缓存池的75%时强制刷新到磁盘 innodb_flush_log_at_trx_commit = 1    #事物提交log buffer立刻写入到redo log文件(0表示写入缓存数据刷新到log buffer,1表示写缓存数据直接刷新到redo log,2表示写缓存数据刷新到系统cache) 二、表的行格式 innodb_default_row_format = dynamic     #创建表默认行格式(主要有DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT) innodb_page_size = 16384   #每个页的大小是16KB。(参数可以有4KB,8KB,16KB,32KB,64KB) 三、Buffer Pool参数优化 innodb_buffer_pool_size = 134217728     #缓存池大小,默认是128M innodb_buffer_pool_instances = 1      #可以配置多个Buffer Pool实例(最多64个实例) innodb_buffer_pool_chunk_size =  134217728    #每个Buffer Pool的大小。(innodb_buffer_pool_size的大小等于innodb_buffer_pool_chunk_size X innodb_buffer_pool_instances)判断缓存池是否够用:show status like 'innodb_buffer_pool_reads';           #从磁盘读取的请求数show status like 'innodb_buffer_pool_read_requests';       #从内存中读取的请求数缓存命中率 = (innodb_buffer_pool_reads + innodb_buffer_pool_read_requests) * 100;   #如果值低于90%就要增加 innodb_buffer_pool_chunk_size内存的大小。 show global status like 'innodb_buffer_pool_pages_data%';      #缓存中存储的数据的页数,包括了脏页和其他页 show global status like 'innodb_buffer_pool_pages_dirty%';      #内存中未同步的脏页的数量show global status like 'innodb_buffer_pool_pages_flushed';    #从缓冲池中刷新脏页到磁盘的请求数show global status like 'innodb_buffer_pool_pages_free';         #缓冲池中的空闲页面数量show global status like 'innodb_buffer_pool_pages_misc';        #其它页(哈希索引页)show global status like 'innodb_buffer_pool_pages_total';        #缓冲池中页的总数量 四、Change Buffer参数优化innodb_change_buffering = ALL      #缓存所有操作。(isnerts:缓存写入操作,deletes:缓存删除操作,changes:缓存更新操作,purges :缓冲在后台发生的物理删除操作,all:启用所有操作,none:表示不开启 )innodb_change_buffer_max_size = 25    #Change Buffer默认占Buffer Pool空间的25%,最多占一半。INSERT BUFFER AND ADAPTIVE HASH INDEX-------------------------------------Ibuf: size 1, free list len 0, seg size 2, 0 mergesmerged operations: insert 0, delete mark 0, delete 0discarded operations: insert 0, delete mark 0, delete 0size:已经合并到辅助索引页的数量free list len:空闲列表的长度seg size:当前的Change Buffer的大小,2 * 16KBmerges:合并的次数merged operations:每个具体操作大的合并次数 insert:合并了多个个插入操作 delete mark:合并了多少个删除标记 delete:合并了多少个物理删除 五、日志缓存参数优化 innodb_log_buffer_size = 16777216     #重做日志缓存默认16MB innodb_log_files_in_group = 2     #重做日志默认是2个 innodb_log_file_size = 50331648     #重做日志大小默认48MB(日志设置过小会频繁切换文件,影响磁盘IO。设置过大当数据库宕机后恢复数据时间很长 ) 六、Innodb IO线程参数优化 have_query_cache = YES      #是否支持查询缓存 query_cache_type = OFF       #默认是关闭查询缓存 query_cache_size = 1048576      #查询缓存大小默认是1MB query_cache_limit =  1048576      #查看缓存大小最大是多少 show global status like 'Qcache_free_blocks';      #查询缓存剩余空闲的blocks数据 show global status like 'Qcache_free_memory';   #查询缓存内存空间大小 show global status like 'Qcache_hits';          #查询缓存命中次数 show global status like 'Qcache_inserts';     #未用到的缓存 show global status like 'Qcache_not_cached';    #没有用到查询缓存数量 show global status like 'Qcache_queries_in_cache';     #当前缓存中缓存的查询数量 缓存命中率 = Qcache_hits / (Qcache_hits + Qcache_inserts) * 100 innodb_old_blocks_pct = 37      #LRU链表冷数据区占37%(3/8),热数据区占63%(5/8)。 innodb_old_blocks_time = 1000   #默认是1000ms(1秒)。 old数据区的数据停留1000ms后再次访问会追加到new数据区的头部。

相关推荐