Innodb存储引擎的缓存命中率计算
数据库的慢查询是我们在生产环境中必须经常检测的,如果慢查询语句过多,说明我们应该增加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的值。
转载于//www.cnblogs.com/FengGeBlog/p/10283095.html
还没有评论,来说两句吧...