sql >> Database >  >> RDS >> Mysql

Hoe mysql-cache handmatig te bouwen

MySQL-cache werkt anders, afhankelijk van of u de MyISAM-opslagengine of de InnoDB-opslagengine gebruikt.

MyISAM slaat alleen indexen op, geen gegevens. U kunt LOAD INDEX INTO CACHE om MyISAM-indexen vooraf te laden in de sleutelbuffercache. Maar er is geen equivalente verklaring als u InnoDB gebruikt.

InnoDB slaat zowel gegevens- als indexpagina's op in de cache. Er is geen speciale opdracht om de cachebuffers op te warmen, maar u kunt een paar SQL-instructies uitvoeren die volledige tabelscans en volledige indexscans uitvoeren om ze in de buffers te laden. Je zou dit moeten kunnen doen met behulp van een script op de server, zonder toevlucht te nemen tot wget !

Ik ben het eens met het antwoord van @code_burgar:150k rijen is klein genoeg dat je niet veel prestatieverlies zou moeten merken terwijl de cache aan het opwarmen is.

Als je het hebt over het opwarmen van de Query Cache , dat is een andere kwestie. U moet de querycache opwarmen met specifieke SQL-query's, omdat die cache de resultatensets die aan die SQL-query's zijn gekoppeld, woordelijk bijhoudt. Uw wget oplossing is inefficiënt en verdubbelt waarschijnlijk veel werk. U zou de querycache moeten kunnen primen door een script op de server uit te voeren dat elke query uitvoert die u eenmaal wilt cachen .

Maar het kan zijn dat u een code-review moet doen om erachter te komen wat die query's zijn, en periodiek uw cache-preload-script bij te werken als uw code verandert.



  1. Ondersteunt CodeIgniter Datamapper ORM een MySQL CASE-instructie in ORDER BY-clausules?

  2. hoe gegevensbestanden van s3 naar postgresql rds te importeren

  3. Aan de slag met Postgres 13 op Ubuntu 20.04

  4. Hoe werkt de convert-functie van SQL bij het converteren van datetime naar float?