sql >> Database >  >> RDS >> Mysql

mysql traag bij eerste zoekopdracht, dan snel voor gerelateerde vragen

Pagina's van de innodb-gegevensbestanden worden in de cache van de innodb-bufferpool opgeslagen. Dit is wat je zou verwachten. Het lezen van bestanden is traag, zelfs op goede harde schijven, vooral willekeurige leesbewerkingen, wat meestal is wat databases zien.

Het kan zijn dat uw eerste zoekopdracht een soort tabelscan uitvoert die veel pagina's in de bufferpool trekt, waarna u ze snel kunt openen. Of iets soortgelijks.

Dit is wat ik zou verwachten.

Gebruik idealiter dezelfde engine voor alle tabellen (uitzonderingen:systeemtabellen, tijdelijke tabellen (misschien) en zeer kleine tabellen of van korte duur). Als je dit niet doet, moeten ze vechten voor ram.

Ervan uitgaande dat al uw tabellen innodb zijn, zorg er dan voor dat de bufferpool tot 75% van het fysieke geheugen van de server gebruikt (ervan uitgaande dat u niet te veel andere taken op de machine uitvoert).

Dan kun je ongeveer 12G van je database in ram passen, dus als het eenmaal "opgewarmd" is, zal de "meest gebruikte" 12G van je database in ram zitten, waar toegang tot het goed en snel gaat.

Sommige gebruikers van mysql hebben de neiging om productieservers "op te warmen" na een herstart door ze een tijdje query's te sturen die van een andere machine zijn gekopieerd (dit zullen replicatieslaves zijn) totdat ze ze aan hun productiepool toevoegen. Dit vermijdt de extreme traagheid die wordt waargenomen terwijl de cache koud is. Youtube doet dit bijvoorbeeld (of in ieder geval vroeger; Google kocht ze en ze kunnen nu Google-fu gebruiken)



  1. Maak een tijdelijke tabel in SQLite

  2. Meerdere rijen invoegen met pg-promise

  3. Meerdere relaties met hetzelfde model CakePHP

  4. Kan PostgreSQL niet installeren:er is een fout opgetreden bij het uitvoeren van het Microsoft VC++ runtime-installatieprogramma op Windows XP