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

Hvordan man manuelt bygger mysql cache

MySQL-cache fungerer forskelligt afhængigt af, om du bruger MyISAM-lagringsmotoren eller InnoDB-lagringsmotoren.

MyISAM cacher kun indekser, ikke data. Du kan bruge LOAD INDEX INTO CACHE for at forudindlæse MyISAM-indekser i nøglebuffercachen. Men der er ingen tilsvarende erklæring, hvis du bruger InnoDB.

InnoDB cacher både data og indekssider. Der er ingen specialiseret kommando til at varme cachebufferne op, men du kan udføre nogle få SQL-sætninger, der udfører fulde tabelscanninger og fulde indeksscanninger for at indlæse dem i bufferne. Du burde være i stand til at gøre dette ved at bruge et script på serveren uden at ty til wget !

Jeg er enig i svaret fra @code_burgar:150.000 rækker er små nok til, at du ikke bør bemærke meget ydeevne, mens cachen varmes op.

Hvis du taler om at varme op Forespørgselscache , det er en anden sag. Du bliver nødt til at varme forespørgselscachen op ved hjælp af specifikke SQL-forespørgsler, da denne cache beholder resultatsæt forbundet med disse SQL-forespørgsler ordret. Din wget løsningen er ineffektiv og dublerer sandsynligvis en masse arbejde. Du bør være i stand til at prime forespørgselscachen ved at køre et script på serveren, der udfører hver forespørgsel, som du vil cache én gang .

Men du skal muligvis lave en kodegennemgang for at finde ud af, hvad disse forespørgsler er, og regelmæssigt opdatere dit cache-preload-script, hvis din kode ændres.



  1. Får du forskelle mellem to borde?

  2. MySQL-indekser - hvad er den bedste praksis?

  3. Mysql - Arkivering af data, hvilken løsning skal jeg bruge?

  4. Ydeevnejustering af hele forespørgselsplanen