首页 > 数据库 > Oracle > Mysql 5.7参数优化
一、数据刷盘
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 merges
merged operations:
insert 0, delete mark 0, delete 0
discarded operations:
insert 0, delete mark 0, delete 0
size:已经合并到辅助索引页的数量
free list len:空闲列表的长度
seg size:当前的Change Buffer的大小,2 * 16KB
merges:合并的次数
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数据区的头部。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25854343/viewspace-2565145/ ,如需转载,请注明出处,否则将追究法律责任。