You can access the patch from: 2917 Kristofer Pettersson 2008-11-07 Bug#38551 query cache can still consume [very little] cpu time even when it is off.
By using the command line option --query_cache_type=0, the user can disable the query cache permanently and avoid taking the query cache mutex.
When the query cache size is zero, all query cache functionallity should be skipped.
Since query_cache_size is protected from any changes by the barrier in Query_cache::resize() we can safely add a test at the begining of the invalidate* functions to avoid having mutexes locked when the query cache is ment to be disabled. After review, it may be pushed to the relevant source trees for release in the next version.
Updated changelog entry: The server unnecessarily acquired a query cache mutex even with the query cache disabled, resulting in a small performance decrement.
Now if the server is started with query_cache_type set to 0, it does not acquire the query cache mutex.
So, the jumpy behaviour is caused by not using a global timestamp for replication delay, but simply the delay behind the last "hop" in the replication chain.
You can access the patch from: 2900 Kristofer Pettersson 2009-10-29 Bug#38551 query cache can still consume [very little] cpu time even when it is off.
Query Cache::invalidate_table locks the query cache, invalidates the QC if query_cache_size 0, unlocks QC and returns.