Innodb存储引擎的缓存命中率计算

本文详细介绍了如何通过分析InnoDB缓存命中率来优化MySQL数据库性能,重点关注Innodb_buffer_pool_read_requests和Innodb_buffer_pool_reads两个指标,以此判断是否需要调整buffer_pool的大小。

数据库的慢查询是我们在生产环境中必须经常检测的,如果慢查询语句过多,说明我们应该增加buffer_pool的大小了。常常检查的指标就是查看缓存命中率是否过低。

mysql> show status like 'innodb_buffer_pool%';
+---------------------------------------+--------------------------------------------------+
| Variable_name                         | Value                                            |
+---------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status        | Dumping of buffer pool not started               |
| Innodb_buffer_pool_load_status        | Buffer pool(s) load completed at 190107  7:19:16 |
| Innodb_buffer_pool_resize_status      |                                                  |
| Innodb_buffer_pool_pages_data         | 31732                                            |
| Innodb_buffer_pool_bytes_data         | 519897088                                        |
| Innodb_buffer_pool_pages_dirty        | 0                                                |
| Innodb_buffer_pool_bytes_dirty        | 0                                                |
| Innodb_buffer_pool_pages_flushed      | 1298499                                          |
| Innodb_buffer_pool_pages_free         | 1024                                             |
| Innodb_buffer_pool_pages_misc         | 8                                                |
| Innodb_buffer_pool_pages_total        | 32764                                            |
| Innodb_buffer_pool_read_ahead_rnd     | 0                                                |
| Innodb_buffer_pool_read_ahead         | 0                                                |
| Innodb_buffer_pool_read_ahead_evicted | 0                                                |
| Innodb_buffer_pool_read_requests      | 438699486                                        |
| Innodb_buffer_pool_reads              | 536971                                           |
| Innodb_buffer_pool_wait_free          | 42342                                            |
| Innodb_buffer_pool_write_requests     | 237826577                                        |
+---------------------------------------+--------------------------------------------------+
18 rows in set (0.04 sec)

我们需要关注这几个值:Innodb_buffer_pool_read_requests表示read请求的次数,Innodb_buffer_pool_reads表示从物理磁盘中读取数据的请求次数

因此缓存命中率的计算方法是:(1- Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests) *100 %,如果缓存命中率过低,则我们需要考虑扩充内存的大小或者是innodb_buffer_pool_size的值。

转载于:https://www.cnblogs.com/FengGeBlog/p/10283095.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值