I want to cache data on MySQL
SET GLOBAL query_cache_size = SOME_SIZE;
Is it all the thing required for caching data [efficiently] in MySQL ?
Do I need to add something extra to use the cache efficiently ?
I don’t have good knowledge on data caching but still need to use for performance issue, so if I’ve missed to give some vital info, answer this question assuming the system is in default state.
I don’t usually recommend using the MySQL query cache. It sounds great in theory, but unfortunately isn’t a great win for caching efficiently, because access to it from queries is governed by a mutex. That means many concurrent queries queue up to get access to the query cache, and this harms more than it helps if you have a lot of concurrent clients.
It even harms INSERT/UPDATE/DELETE, even though these queries don’t have result sets, because they purge query results from the query cache if they update the same table(s). And this purging is subject to the same queueing on the mutex.
A better strategy is to use memcached for scalable caching of specific query results, but this requires you to think about what you want to cache and to write application code to access memcached and fail back to MySQL if the data isn’t present in the cache. That’s more work, but if you do it right it gives better results.
See TANSTAAFL.