mysql性能调优——缓存命中率innodb_buffer_pool_size
1、简介:顺丰单号
众所周知,系统读取数据时,从内存中读取要⽐从硬盘上速度要快好⼏百倍。故现在绝⼤部分应⽤系统,都会最⼤程度的使⽤缓存(内存中的⼀个存储区域),来提⾼系统的运⾏效率。MySQL数据库也不例外。在MySQL5.5之前,⼴泛使⽤的和默认的存储引擎是MyISAM。MyISAM使⽤操作系统缓存来缓存数据。InnoDB需要innodb buffer pool中处理缓存。所以⾮常需要有⾜够的InnoDB buffer pool空间。mysql数据库的pool 可以缓存索引和⾏数据,值越⼤,IO读写就越少,如果单纯的做数据库服务,该参数可以设置到电脑物理内存的80%,但是也要根据服务器综合使⽤情况进⾏合理设置。
2、命中率计算:
(1)查询参数:
数学教学案例执⾏sql查看innodb_buffer_pool系列参数:
show status like ‘%innodb_buffer_pool_%’
(2)值计算公式:
(3)差值计算公式:
两次查询的innodb_buffer_pool_read_requests差
/(两次查询的innodb_buffer_pool_read_requests差
+两次查询的innodb_buffer_pool_read_ahead差
+两次查询的innodb_buffer_pool_reads差)
3、参数调优:
当上述两种公式计算的命中率较低的时候,说明mysql性能有所降低了,需要根据内存硬件的⼤⼩进⾏mysql的缓存命中率优化。Mysql的innodb缓存命中率的核⼼优化参数有三个:innodb_buffer_pool_instances、innodb_buffer_pool_chunk_size、
日本文化特点innodb_buffer_pool_size。
innodb_buffer_pool_instances:是⼀个正整数即可,不要超过服务器的cpu核数。建议可以先设置服务器CPU核数的⼀半。
好听的伤感网络歌曲
innodb_buffer_pool_chunk_size:是⼀个整数的MB、GB即可。土家族的传统节日
innodb_buffer_pool_size:该值是⼀个计算值,innodb_buffer_pool_instances*innodb_buffer_pool_chunk_size的结果值的⼀个整数倍数,否则该值设计的不合理,mysql会⾃动根据计算规则,计算⼀个⼩于该值的⼀个有效值。该值的⼤⼩在服务器物理内存的50%—80%之间,还要考虑该服务器上是否有其它应⽤使⽤内存等情况。
函综上所述,对于mysql的innodb缓存命中率优化为:对mysql的innodb_buffer_pool_instances设置⼀个⼩于服务器CPU核数的⼀个正整数;对mysql的innodb_buffer_pool_chunk_size设置⼀个合理的MB或GB,让innodb_buffer_pool_size在该服务器物理内存的50%—80%范围内。设计好三个参数后,修改mysql的配置⽂件myf,然后重新启动mysql服务即可。这三个参数也是根据⾃⼰服务器和mysql存储数据情况进⾏不断尝试和调试的。
例如:服务器16CPU核/64GB,对参数进⾏如下设置:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论