From cf3a74eb60410e092c3098e77d818b7953c41d16 Mon Sep 17 00:00:00 2001 From: Peter Shchuchkin Date: Fri, 25 Aug 2017 12:43:28 +0300 Subject: [PATCH] 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. --- sql/sql_cache.cc | 3 ++- sql/sql_cache.h | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index cc2edfed123..ed5a8f84127 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -961,7 +961,7 @@ inline void Query_cache_query::unlock_reading() void 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); lock_writing(); DBUG_PRINT("qcache", ("inited & locked query for block 0x%lx", @@ -2142,6 +2142,7 @@ lookup: } move_to_query_list_end(query_block); hits++; + query->increment_hits(); unlock(); /* diff --git a/sql/sql_cache.h b/sql/sql_cache.h index 3230034cf74..383bff305d9 100644 --- a/sql/sql_cache.h +++ b/sql/sql_cache.h @@ -159,6 +159,7 @@ struct Query_cache_query unsigned int last_pkt_nr; uint8 tbls_type; uint8 ready; + ulonglong hit_count; Query_cache_query() {} /* Remove gcc warning */ inline void init_n_lock(); @@ -184,6 +185,8 @@ struct Query_cache_query */ inline void set_results_ready() { ready= 1; } inline bool is_results_ready() { return ready; } + inline void increment_hits() { hit_count++; } + inline ulong hits() { return hit_count; } void lock_writing(); void lock_reading(); bool try_lock_writing();