Does my server need more memory?

Hello,
I’m trying to find a reliable method to see if MySQL would benefit with more memory?
My current approach is to use the output from show engine innodb status. i.e.
Buffer pool hit rate 1000 / 1000
If it is 1000 / 1000 things are good.
Is this too simplistic? What approaches do other people use?
Thanks.

@Jamie_Downs, you need to look at buffer pool reads vs buffer pool read requests. The former indicates a buffer pool “miss” which must go to disk. If the ratio of misses to cached reads is < 90%, then you could probably benefit from more memory to the buffer pool.

Thanks Matthew.
So the following would be pretty good for a box that’s been up for a while?
show global status like ‘%Innodb_buffer_pool_read%’;
±--------------------------------------±--------------+
| Variable_name | Value |
±--------------------------------------±--------------+
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead | 64304068 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_requests | 4180641185206 |
| Innodb_buffer_pool_reads | 599335740 |
±--------------------------------------±--------------+

select (599335740/4180641185206)*100 as bpoolhitrate;
±-------------+
| bpoolhitrate |
±-------------+
| 0.0143 |
±-------------+

My apologies. I had it backwards. I’ve edited my post above.

Innodb_buffer_pool_read_requests - logical reads from buffer pool
Innodb_buffer_pool_reads - disk reads / miss from pool

So do this:

_read_requests / (_read_requests + _reads) * 100 = hit ratio

You have a 99.98% hit rate. You are good :+1: If things still feel slow, run EXPLAIN on all queries and verify they are using proper indexes. More often than not, poor performance in MySQL is a result from bad queries, not from improper configuration.

Perfect thanks for the further explanation and clarification. Really useful.