mysql性能调优——缓存命中率innodb_buffer_pool_size

目录

1、简介:

2、命中率计算:

(1)查询参数:

(2)值计算公式:

(3)差值计算公式:

3、参数调优:


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的配置文件my.cnf,然后重新启动mysql服务即可。这三个参数也是根据自己服务器和mysql存储数据情况进行不断尝试和调试的。

例如:服务器16CPU核/64GB,对参数进行如下设置:

解释:32GB=8*1024MB*4,倍数为4,因此该值有效,服务器为16核,设计innodb_buffer_pool_instances为8比较合适也,服务器内存64GB,设计innodb_buffer_pool_size为32GB比较合适也。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值