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

mysql langsom ved første forespørgsel, derefter hurtig for relaterede forespørgsler

Sider med innodb-datafiler bliver cachelagret i innodb-bufferpuljen. Dette er, hvad du ville forvente. Læsning af filer er langsom, selv på gode harddiske, især tilfældige læsninger, som for det meste er, hvad databaser ser.

Det kan være, at din første forespørgsel laver en form for tabelscanning, som trækker mange sider ind i bufferpuljen, hvorefter det er hurtigt at få adgang til dem. Eller noget lignende.

Det er, hvad jeg ville forvente.

Ideelt set skal du bruge den samme motor til alle tabeller (undtagelser:systemtabeller, midlertidige tabeller (måske) og meget små eller kortlivede tabeller). Hvis du ikke gør dette, så skal de kæmpe for ram.

Forudsat at alle dine borde er innodb, så lad bufferpuljen bruge op til 75 % af serverens fysiske ram (forudsat at du ikke kører for mange andre opgaver på maskinen).

Så vil du være i stand til at passe omkring 12G af din database ind i ram, så når den er "varmet op", vil de "mest brugte" 12G af din database være i ram, hvor det er dejligt hurtigt at få adgang.

Nogle brugere af mysql har en tendens til at "varme" produktionsservere op efter en genstart ved at sende dem forespørgsler kopieret fra en anden maskine i et stykke tid (disse vil være replikeringsslaver), indtil de tilføjer dem til deres produktionspulje. Dette undgår den ekstreme langsomhed, der ses, mens cachen er kold. For eksempel gør Youtube dette (eller det plejede i det mindste; Google købte dem, og de kan nu bruge Google-fu)



  1. Sådan udføres en Failback-handling for MySQL-replikeringsopsætning

  2. grupper efter første og sidste forekomst

  3. 6 almindelige fejlscenarier for MySQL og MariaDB, og hvordan man løser dem

  4. Hvad er fordelene ved at arbejde med en Access Support-virksomhed?