sql >> Databáze >  >> RDS >> Mysql

mysql pomalý na první dotaz, pak rychlý pro související dotazy

Stránky datových souborů innodb se ukládají do mezipaměti ve fondu vyrovnávací paměti innodb. Tohle byste čekali. Čtení souborů je pomalé, dokonce i na dobrých pevných discích, zejména náhodné čtení, které většinou vidí databáze.

Může se stát, že váš první dotaz provádí nějaký druh skenování tabulky, který stáhne mnoho stránek do oblasti vyrovnávacích pamětí, a pak je přístup k nim rychlý. Nebo něco podobného.

To je to, co bych očekával.

V ideálním případě použijte stejný engine pro všechny tabulky (výjimky:systémové tabulky, dočasné tabulky (možná) a velmi malé nebo krátkodobé tabulky). Pokud to neuděláte, budou muset bojovat o berana.

Za předpokladu, že všechny vaše tabulky jsou innodb, zajistěte, aby fond vyrovnávací paměti využíval až 75 % fyzické paměti RAM serveru (za předpokladu, že na počítači nespouštíte příliš mnoho jiných úloh).

Pak budete schopni vměstnat přibližně 12G vaší databáze do paměti ram, takže jakmile se "zahřeje", "nejpoužívanějších" 12G vaší databáze bude v paměti ram, kde je přístup k ní pěkný a rychlý.

Někteří uživatelé mysql mají tendenci "zahřívat" produkční servery po restartu tím, že jim na chvíli posílají dotazy zkopírované z jiného počítače (budou to replikační slave), dokud je nepřidají do svého produkčního fondu. Vyhnete se tak extrémní pomalosti, ke které dochází, když je mezipaměť studená. Dělá to například Youtube (nebo alespoň dříve; Google je koupil a oni teď mohou používat Google-fu)



  1. SQLRecoverableException:I/O Exception:Reset připojení

  2. SQL řádky do sloupců

  3. Jak funguje funkce RPAD() v MySQL

  4. Výjimka SQLite při pokusu o odstranění řádku