Commit cf3a74eb authored by Peter Shchuchkin's avatar Peter Shchuchkin Committed by Sergey Vojtovich

Counting hits for queries in query cache.

Added hit_count field to Query_cache_query and methods to get and increment it.
The counter is incremented when query results are read from query cache.
parent 5dd8e1bf
...@@ -961,7 +961,7 @@ inline void Query_cache_query::unlock_reading() ...@@ -961,7 +961,7 @@ inline void Query_cache_query::unlock_reading()
void Query_cache_query::init_n_lock() void Query_cache_query::init_n_lock()
{ {
DBUG_ENTER("Query_cache_query::init_n_lock"); DBUG_ENTER("Query_cache_query::init_n_lock");
res=0; wri = 0; len = 0; ready= 0; res=0; wri = 0; len = 0; ready= 0; hit_count = 0;
mysql_rwlock_init(key_rwlock_query_cache_query_lock, &lock); mysql_rwlock_init(key_rwlock_query_cache_query_lock, &lock);
lock_writing(); lock_writing();
DBUG_PRINT("qcache", ("inited & locked query for block 0x%lx", DBUG_PRINT("qcache", ("inited & locked query for block 0x%lx",
...@@ -2142,6 +2142,7 @@ def_week_frmt: %lu, in_trans: %d, autocommit: %d", ...@@ -2142,6 +2142,7 @@ def_week_frmt: %lu, in_trans: %d, autocommit: %d",
} }
move_to_query_list_end(query_block); move_to_query_list_end(query_block);
hits++; hits++;
query->increment_hits();
unlock(); unlock();
/* /*
......
...@@ -159,6 +159,7 @@ struct Query_cache_query ...@@ -159,6 +159,7 @@ struct Query_cache_query
unsigned int last_pkt_nr; unsigned int last_pkt_nr;
uint8 tbls_type; uint8 tbls_type;
uint8 ready; uint8 ready;
ulonglong hit_count;
Query_cache_query() {} /* Remove gcc warning */ Query_cache_query() {} /* Remove gcc warning */
inline void init_n_lock(); inline void init_n_lock();
...@@ -184,6 +185,8 @@ struct Query_cache_query ...@@ -184,6 +185,8 @@ struct Query_cache_query
*/ */
inline void set_results_ready() { ready= 1; } inline void set_results_ready() { ready= 1; }
inline bool is_results_ready() { return ready; } inline bool is_results_ready() { return ready; }
inline void increment_hits() { hit_count++; }
inline ulong hits() { return hit_count; }
void lock_writing(); void lock_writing();
void lock_reading(); void lock_reading();
bool try_lock_writing(); bool try_lock_writing();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment