HiveBrain v1.2.0
Get Started
← Back to all entries
patternsqlMinor

Can I tell MySQL what to cache?

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
canwhattellmysqlcache

Problem

Pretty straightforward question:

Let's say I have a specific query that I know is regularly used, can I tell MySQL to always cache it "automatically" ... i.e. once the cached query results are flushed the mysqld immediately runs that query again to have the cached data ready for the next user?

Or the other way round: can I tell MySQL to not cache specific queries?
What about other caching options, not necessarily related to queries?

I searched through the web on this but can't really find anything related.

Solution

MySQL Documentation has SQL_NO_CACHE option:


Two query cache-related options may be specified in SELECT statements:


SQL_CACHE


The query result is cached if it is cacheable and the value of the
query_cache_type system variable is ON or DEMAND.


SQL_NO_CACHE


The server does not use the query cache. It neither checks the query
cache to see whether the result is already cached, nor does it cache
the query result. (Due to a limitation in the parser, a space
character must precede and follow the SQL_NO_CACHE keyword; a nonspace
such as a newline causes the server to check the query cache to see
whether the result is already cached.)


Examples:

SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;


You can set SQL_NO_CACHE as the default for your session by setting query_cache_type

SET query_cache_type = 'DEMAND';


or

SET query_cache_type = 2;


Afterwards, you must say SELECT SQL_CACHE to make it cache the SELECT

Code Snippets

SELECT SQL_CACHE id, name FROM customer;
SELECT SQL_NO_CACHE id, name FROM customer;
SET query_cache_type = 'DEMAND';
SET query_cache_type = 2;

Context

StackExchange Database Administrators Q#95838, answer score: 5

Revisions (0)

No revisions yet.