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

Doporučené postupy optimalizace databáze MySQL

"Nejlepší postup" je:

  1. Měřte výkon, izolujte příslušný subsystém tak dobře, jak jen můžete.
  2. Určete hlavní příčinu úzkého hrdla. Jste I/O vázáni? Vázaný na CPU? Vázaná na paměť? Čekáte na zámky?
  3. Proveďte změny ke zmírnění hlavní příčiny, kterou jste objevili.
  4. Zopakujte měření, abyste prokázali, že jste problémové místo vyřešili a o kolik .
  5. Přejděte na krok 2 a opakujte podle potřeby, dokud systém nebude pracovat dostatečně rychle.

Přihlaste se k odběru kanálu RSS na adrese http://www.mysqlperformanceblog.com a přečtěte si také jeho historické články. To je nesmírně užitečný zdroj moudrosti související s výkonem. Ptali jste se například na InnoDB vs. MyISAM. Jejich závěr:InnoDB má v průměru ~30% vyšší výkon než MyISAM. I když existuje také několik scénářů použití, kde MyISAM překonává InnoDB.

Autoři tohoto blogu jsou také spoluautory "High Performance MySQL", knihy, o které se zmiňuje @Andrew Barnett.

Komentář od @ʞɔıu:Jak zjistit, zda jste vázáni na I/O versus vázaní na CPU nebo na paměť, závisí na platformě. Operační systém může nabízet nástroje jako ps, iostat, vmstat nebo top. Nebo možná budete muset získat nástroj třetí strany, pokud jej váš operační systém neposkytuje.

V zásadě platí, že jakýkoli zdroj, který je navázán na 100% využití/saturaci, bude pravděpodobně vaším úzkým hrdlem. Pokud je zatížení vašeho CPU nízké, ale vaše I/O zatížení je pro váš hardware maximální, pak jste I/O vázáni.

To je však jen jeden datový bod. Náprava může také záviset na dalších faktorech. Například složitý SQL dotaz může provádět řazení souborů, což zaměstnává I/O. Měli byste na to hodit více/rychlejší hardware, nebo byste měli přepracovat dotaz, abyste se vyhnuli řazení souborů?

Existuje příliš mnoho faktorů, které nelze shrnout v příspěvku StackOverflow, a skutečnost, že na toto téma existuje mnoho knih, to podporuje. Udržovat efektivní provoz databází a co nejlépe využívat zdroje je práce na plný úvazek, která vyžaduje specializované dovednosti a neustálé studium.

Jeff Atwood právě napsal pěkný blogový článek o hledání úzkých míst v systému:



  1. V mysql nelze použít název sloupce desc

  2. MySQL:VYŽADOVAT SSL se v grantech nezobrazuje

  3. Funkce LENGTH() v Oracle

  4. O obnovování objektů v relaci sqlalchemy