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

Maximální využití paměti MySQL

Maximální využití paměti MySQL velmi závisí na hardwaru, vašem nastavení a samotnou databázi.

Hardware

Hardware je samozřejmostí. Čím více RAM, tím lepší a rychlejší disky ftw . Nevěřte však těm měsíčním nebo týdenním zprávám. MySQL se neškáluje lineárně – ani na hardwaru Oracle. Je to trochu složitější.

Sečteno a podtrženo:neexistuje žádné obecné pravidlo pro to, co je doporučeno pro vaše Nastavení MySQL. Vše závisí na aktuálním použití nebo projekcích.

Nastavení a databáze

MySQL nabízí nespočet proměnných a přepínačů pro optimalizaci jeho chování. Pokud narazíte na problémy, opravdu si musíte sednout a přečíst si příručku (f'ing).

Pokud jde o databázi -- několik důležitých omezení:

  • tabulkový stroj (InnoDB , MyISAM , ...)
  • velikost
  • indexy
  • použití

Většina tipů MySQL o stackoverflow vám řekne o 5-8 takzvaných důležitých nastaveních. Za prvé, ne všechny jsou důležité - např. alokovat spoustu zdrojů InnoDB a nepoužívat InnoDB nedává moc smysl, protože tyto zdroje jsou plýtvané.

Nebo - mnoho lidí navrhuje zvýšit max_connection proměnná – no, málo vědí, že to také znamená, že MySQL přidělí více zdrojů na zajištění těchto max_connections -- pokud bude někdy potřeba. Jasnějším řešením může být uzavření databázového připojení ve vaší DBAL nebo snížení wait_timeout k uvolnění těchto vláken.

Pokud zachytíte můj drift – je toho opravdu hodně, hodně o čem číst a učit se.

Motory

Tabulkové enginy jsou docela důležité rozhodnutí, mnoho lidí na ně brzy zapomene a pak najednou zjistí, že bojují s MyISAM o velikosti 30 GB tabulku, která uzamkne a zablokuje celou jejich aplikaci.

Nechci říct, že MyISAM je na hovno , ale InnoDB lze vyladit tak, aby reagovala téměř nebo téměř stejně rychle jako MyISAM a nabízí něco jako zamykání řádků na UPDATE zatímco MyISAM uzamkne celou tabulku, když je do ní zapsána.

Pokud máte volnost provozovat MySQL na své vlastní infrastruktuře, můžete se také podívat na server percona protože mezi zahrnutím spousty příspěvků od společností jako Facebook a Google (vědí rychle), zahrnuje také vlastní drop-in náhradu za InnoDB Percona s názvem XtraDB .

Viz můj souhrn pro nastavení percona-server (a -client) (na Ubuntu):http://gist.github .com/637669

Velikost

Velikost databáze je velmi, velmi důležitá -- věřte nebo ne, většina lidí na Intarwebech nikdy nezvládla rozsáhlé a intenzivní nastavení MySQL, ale takové skutečně existují. Někteří lidé budou trollovat a říkat něco jako:"Používejte PostgreSQL!!!111", ale teď je ignorujme.

Pointa je:soudě podle velikosti je třeba učinit rozhodnutí o hardwaru. S 1 GB RAM opravdu nemůžete zajistit rychlý běh 80GB databáze.

Indexy

Není:čím více, tím lépe. Je třeba nastavit pouze potřebné indexy a použití je třeba zkontrolovat pomocí EXPLAIN . Přidejte k tomu EXPLAIN MySQL je opravdu omezený, ale je to začátek.

Doporučené konfigurace

O těchto my-large.cnf a my-medium.cnf soubory -- ani nevím, pro koho byly napsány. Hoďte si vlastní.

Ladění primer

Skvělým začátkem je tuning primer . Je to bash skript (nápověda:budete potřebovat linux), který přebírá výstup SHOW VARIABLES a SHOW STATUS a zabalí to do doufejme užitečného doporučení. Pokud váš server nějakou dobu běžel, doporučení bude lepší, protože budou k dispozici data, na kterých je možné založit.

Tuningový základ však není kouzelná omáčka. Stále byste si měli přečíst všechny proměnné, které navrhuje změnit.

Čtení

Opravdu rád doporučuji mysqlperformanceblog . Je to skvělý zdroj pro všechny druhy tipů souvisejících s MySQL. A není to jen MySQL, vědí také hodně o správném hardwaru nebo doporučují nastavení pro AWS atd.. Tito kluci mají roky a roky zkušeností.

Dalším skvělým zdrojem je planet-mysql , samozřejmě.



  1. Jak získat seznam tabulek bez omezení primárního klíče v databázi SQL Server - SQL Server / Výukový program T-SQL, část 58

  2. ORA-38868

  3. Cloud9 postgres

  4. SQL Server Process Queue Race Condition