Mysql query cache
From wikinotes
The query cache is a key-value store of cacheable-queries, and their result.
This interferes with benchmarking, since repeat queries may be much faster to lookup.
NOTE:
It is disabled by default starting in MySQL-5.6
https://dev.mysql.com/blog-archive/mysql-8-0-retiring-support-for-the-query-cache/
Documentation
MySQL: Query Cache https://dev.mysql.com/doc/refman/5.7/en/query-cache.html MyISAM: Key Cache https://dev.mysql.com/doc/refman/5.7/en/myisam-key-cache.html
Overview
It is implemented as an LRU key-value store for exact (byte-for-byte) query matches.
Each cache entry knows which tables it references for permissions, and cache-invalidation.
Whenever any row is changed in a table, all cache entries using that table are purged.SHOW VARIABLES LIKE 'query_cache_type'; # cache is 'ON/OFF/DEMAND' SHOW VARIABLES LIKE 'query_cache_size'; # max capacity of cache
Disabling
To avoid the query cache:
# 1. Add a calculated-function to your selected rows - since they are not cacheable # TODO: validate SELECT ..., NOW() FROM ... # 2. Use 'SQL_NO_CACHE' in your query # (This often has not worked for me) SELECT SQL_NO_CACHE ... FROM ...