summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2018-04-24 09:32:10 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2018-04-24 09:32:10 +0200
commit47ac7252ff2be9a07b669ce3365953cd9a207654 (patch)
treed1a1bd36dd84ac049e812bd885e59e2edb54b5e7
parent461de7edeaef80693e38969a4d7d3f5ae9bb5e63 (diff)
parentabb4db4c3f52b6f79aad5df2decf10b49e7de1e9 (diff)
downloadmariadb-git-47ac7252ff2be9a07b669ce3365953cd9a207654.tar.gz
Merge branch 'grooverdan-10.2-MDEV-10814-dont-dump-query-cache' into bb-10.3-MDEV-10814
-rw-r--r--sql/sql_cache.cc19
-rw-r--r--sql/sql_cache.h1
2 files changed, 19 insertions, 1 deletions
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index c8f18556d50..d46df21bfcf 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -329,6 +329,9 @@ TODO list:
*/
#include "mariadb.h" /* NO_EMBEDDED_ACCESS_CHECKS */
+#if defined(DBUG_OFF) && defined(HAVE_MADVISE)
+#include <sys/mman.h>
+#endif
#include "sql_priv.h"
#include "sql_basic_types.h"
#include "sql_cache.h"
@@ -2591,7 +2594,7 @@ size_t Query_cache::init_cache()
{
size_t mem_bin_count, num, step;
size_t mem_bin_size, prev_size, inc;
- size_t additional_data_size, max_mem_bin_size, approx_additional_data_size;
+ size_t max_mem_bin_size, approx_additional_data_size;
int align;
DBUG_ENTER("Query_cache::init_cache");
@@ -2656,6 +2659,13 @@ size_t Query_cache::init_cache()
if (!(cache= (uchar *)
my_malloc_lock(query_cache_size+additional_data_size, MYF(0))))
goto err;
+#if defined(DBUG_OFF) && defined(HAVE_MADVISE) && defined(MADV_DONTDUMP)
+ if (madvise(cache, query_cache_size+additional_data_size, MADV_DONTDUMP))
+ {
+ DBUG_PRINT("warning", ("coudn't mark query cache memory as MADV_DONTDUMP: %s",
+ strerror(errno)));
+ }
+#endif
DBUG_PRINT("qcache", ("cache length %zu, min unit %zu, %zu bins",
query_cache_size, min_allocation_unit, mem_bin_num));
@@ -2818,6 +2828,13 @@ void Query_cache::free_cache()
} while (block != queries_blocks);
}
+#if defined(DBUG_OFF) && defined(HAVE_MADVISE) && defined(MADV_DODUMP)
+ if (madvise(cache, query_cache_size+additional_data_size, MADV_DODUMP))
+ {
+ DBUG_PRINT("warning", ("coudn't mark query cache memory as MADV_DODUMP: %s",
+ strerror(errno)));
+ }
+#endif
my_free(cache);
make_disabled();
my_hash_free(&queries);
diff --git a/sql/sql_cache.h b/sql/sql_cache.h
index eb046b4d167..0ed45a9ed81 100644
--- a/sql/sql_cache.h
+++ b/sql/sql_cache.h
@@ -337,6 +337,7 @@ protected:
till the end of a flush operation.
*/
mysql_mutex_t structure_guard_mutex;
+ size_t additional_data_size;
uchar *cache; // cache memory
Query_cache_block *first_block; // physical location block list
Query_cache_block *queries_blocks; // query list (LIFO)