sql >> Database teknologi >  >> RDS >> Mysql

Hvornår skal SQL_NO_CACHE bruges

SQL_NO_CACHE

Du skal blot tilføje SQL_NO_CACHE efter SELECT-delen af ​​SELECT-sætningen og før feltlisten. Den første forespørgsel nedenfor vil bruge forespørgselscachen, hvis den er aktiveret, og forespørgslen er cachelagret:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

Den anden forespørgsel nedenfor vil ikke bruge forespørgselscachen:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Dette er især nyttigt ved benchmarking af en forespørgsel; hvis forespørgselscachen er aktiveret, selvom den første forespørgsel kan tage noget tid, er den anden og efterfølgende forespørgsler næsten øjeblikkelige. Med brugen af ​​SQL_NO_CACHE kan du være sikker på, at forespørgselscachen ikke bruges og sikkert kan sammenligne resultattider. SQL_NO_CACHE-hintet slår MySQL's indbyggede forespørgselscache-mekanisme fra for en bestemt forespørgsel. Du kan hjælpe MySQL med at gøre forespørgselscachen mere effektiv ved at bruge dette tip til forespørgsler, der er meget dynamiske (såsom en søgeordssøgning eller en rapport, der kun kører om natten). Sørg for, at forespørgselscache er slået til, ellers er der ikke behov for dette kommando.

hvilken SQL_CACHE og SQL_NO_CACHE?

Indstillingerne SQL_CACHE og SQL_NO_CACHE påvirker cachelagring af forespørgselsresultater i forespørgselscachen. SQL_CACHE fortæller MySQL at gemme resultatet i forespørgselscachen, hvis den er cachebar, og værdien af ​​systemvariablen query_cache_type er 2 eller DEMAND. Med SQL_NO_CACHE bruger serveren ikke forespørgselscachen. Den kontrollerer hverken forespørgselscachen for at se, om resultatet allerede er cachelagret, og den cacherer heller ikke forespørgselsresultatet. (På grund af en begrænsning i parseren skal et mellemrumstegn gå foran og følge SQL_NO_CACHE nøgleordet; et ikke-mellemrum, såsom en ny linje, får serveren til at kontrollere forespørgselscachen for at se, om resultatet allerede er cachelagret.)

NO_CACHE kan efter min mening bruges, hvis 'CACHE' er aktiveret, og dataene i db'en er dynamisk opdateret, dvs. at db-datacachen ikke kan stoles på, f.eks. mulighed for ændring af data

Opdateringer af nyttige scenarier

1) tvinge til ikke at bruge cache til at teste forespørgselshastigheden



  1. Hvordan tilføjer man en primær nøgle til en MySQL-tabel?

  2. Hvordan kan jeg eksportere skemaet for en database i PostgreSQL?

  3. Android SQlite opdaterer ikke dataene

  4. Om RM-formatelementet i Oracle