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

10 užitečných tipů pro ladění výkonu MySQL

Stejně jako všechny ostatní databáze může být i MySQL komplikovaná a může okamžitě přestat vystavovat všechny vaše podnikání a úkoly. Většinu problémů ovlivňujících výkon však tvoří běžné chyby.

Chcete-li zajistit, aby váš server fungoval efektivně a efektivně poskytováním stabilního a konzistentního výkonu, musíte odstranit chyby, které jsou často způsobeny nějakou jemností v pracovní zátěži nebo v pasti konfigurace.

Jak objem dat roste, stává se stále složitější. Proto je nezbytné databáze dobře optimalizovat, aby poskytovaly efektivní zkušenost koncového uživatele. Ladění výkonu MySQL je konečným řešením, protože pomůže poskytnout řešení těchto databázových problémů.

Ladění výkonu MySQL

V tomto článku najdete několik užitečných tipů, jak používat ladění výkonu MySQL. To vám pomůže získat nejlepší výkon z vašeho MySQL.

Krok 1:Nepoužívejte MySQL jako frontu

Bez vašeho uvědomění se do vaší aplikace mohou vplížit fronty a vzory podobné frontám. Typickým příkladem je označení e-mailů jako neodeslaných, jejich odeslání a následné označení jako odeslané. toto je běžný, ale zřídka nepostřehnutelný problém, který má většina uživatelů tendenci ignorovat.

Způsobují dvě hlavní složitosti výkonu:

  1. Seriálizují vaši pracovní zátěž, čímž zabraňují dokončení úloh v paralelním pořadí. Navíc často vedou k tabulce, která obsahuje rozpracovanou práci a historická data z zakázek, které byly zpracovány již dávno. To obecně zpomaluje rychlost zpracování a proces.
  2. Obojí přidá latenci aplikaci a načte se do MySQL.

Krok 2:Vytvořte profil své pracovní zátěže

Profilování vaší pracovní zátěže je zásadní, protože vám pomůže porozumět tomu, jak váš server funguje, a čas, který tráví zpracováním úloh. Nejlepším nástrojem, který vám s tím pomůže, je analyzátor dotazů MySQL Enterprise Monitors ze sady nástrojů Percona.

Poznámka: Dostupné pouze pro uživatele systému Linux

Nástroje dokážou zachytit dotazy provedené serverem a vrátit tabulku setříděných úloh při zkrácení doby odezvy.

Profilování vaší pracovní zátěže odhaluje nejdražší dotazy pro další ladění. Čas je nejkritičtější, protože důležité je, jak rychle se dokončí při zadávání dotazu.

Nástroje pro profilování také seskupují podobné dotazy, což vám umožňuje vidět pomalé a rychlé dotazy, které se však provádějí mnohokrát.

Krok 3:Pochopení čtyř základních zdrojů

CPU, paměť, disk a síť jsou čtyři základní zdroje potřebné pro fungování databáze. Pokud je některý z těchto zdrojů přetížený, slabý nebo nepravidelný, bude databáze pravděpodobně fungovat špatně.

Vždy byste měli zajistit, aby všechny zmíněné čtyři zdroje byly silné a stabilní, aby MySQL fungovala bezchybně. Organizace si obvykle vybírají servery s rychlými CPU a disky, které mohou pojmout více paměťových slotů.

Přidání paměti je levný a snadný způsob, jak řádově zvýšit výkon, zejména u zátěží vázaných na disk. To se může zdát nerozumné, ale mnoho disků je nadměrně využíváno, protože není dostatek paměti pro uložení pracovní sady dat serveru.

Při odstraňování problémů pečlivě zkontrolujte výkon a využití všech čtyř zdrojů, abyste mohli určit statistiky výkonu čtyř zdrojů. Sledování jejich výkonu je důležité, protože pomáhá uživateli vědět, co by se mělo zlepšit nebo co potřebuje vyměnit. Tuto metodu můžete vyzkoušet, protože je to jedna z nejrychlejších metod řešení problémů s výkonem v MYSQL.

Krok 4:Filtrujte výsledky podle toho, co je nejlevnější

Skvělým způsobem optimalizace je provést nejprve levnou, nepřesnou práci a poté tvrdě a precizně pracovat na menší, což vede k souboru dat.

Příklad:

Předpokládejme, že hledáte něco v daném okruhu geografického bodu. Prvním nástrojem v sadě nástrojů mého programátora je Haversinův vzorec {Velký kruh} pro výpočet vzdálenosti podél povrchu koule.

Problém s touto technikou je, že vzorec vyžaduje mnoho trigonometrických operací, které jsou velmi citlivé na CPU. V důsledku toho mají výpočty tendenci běžet pomalu a vytížení procesoru stroje raketově stoupá.

Před použitím vzorce ořízněte své záznamy na malou podmnožinu součtu a ořízněte výslednou sadu na přesný kruh. Čtverec, který obsahuje kruh, ať už přesně nebo nepřesně, je snadný způsob, jak toho dosáhnout. To zajišťuje, že svět mimo náměstí nebude nikdy zasažen všemi těmi nákladnými trigonometrickými funkcemi.

Krok 5:Poznání a pochopení dvou smrtících pastí škálovatelnosti.

Škálovatelnost nemusí být tak vágní, jak se mnozí domnívají. Místo toho existují přesné matematické definice škálovatelnosti vyjádřené jako rovnice, které zdůrazňují, proč se systémy neškálují tak dobře, jak by měly.

Zákon o univerzální škálovatelnosti je definice, která je užitečná při vyjadřování a kvantifikaci charakteristik škálovatelnosti systémů. Vysvětluje problémy se škálováním z hlediska serializace a přeslechů, což jsou dva základní náklady.

Paralelní procesy, které se musí zastavit, aby došlo k něčemu serializovanému, jsou ve své podstatě omezeny svou škálovatelností. Pokud navíc paralelní procesy potřebují vzájemně komunikovat, aby koordinovaly svou práci, navzájem se omezují. Proto je lepší vyhnout se serializaci a přeslechům, aby se vaše aplikace mohla rychle a efektivně škálovat.

Krok 6:Nezaměřujte se příliš na konfiguraci

Lidé tráví příliš mnoho času laděním konfigurací. Výsledkem obvykle není výrazné zlepšení a někdy může být velmi škodlivé. Výchozí nastavení, které je dodáváno s MySQL, je univerzální a je velmi zastaralé, takže nemusíte nic konfigurovat.

Je tedy nezbytné získat správné základy a měnit nastavení pouze v případě potřeby. V mnoha případech se nástroje pro ladění serveru nedoporučují, protože by mohly uživatele uvést v omyl protichůdnými informacemi. Některé mají v sobě zakódované nebezpečné, nepřesné rady, jako jsou poměry zásahů do mezipaměti a vzorce spotřeby paměti.

Krok 7:Dejte si pozor na stránkovací dotazy

Aplikace, které stránkují, obvykle srazí server na kolena. Optimalizace lze často nalézt v samotném jiném uživatelském rozhraní. Například místo zobrazení přesného počtu stránek ve výsledcích a odkazech můžete zobrazit pouze odkaz na stránku, která tyto informace obsahuje. Můžete tak zabránit lidem v přetížení původní stránky.

Na straně dotazu lze místo použití offsetu s limitem vybrat jeden další řádek a když kliknete na „další stránku“, můžete tento poslední řádek určit jako výchozí bod pro další sadu výsledků.

Krok 8:Ukládejte statistiky dychtivě, neochotně upozorňujte

Upozornění a monitorování jsou zásadní, ale co se stane s typickým monitorovacím systémem, je to, že začne odesílat falešně pozitivní výsledky. Systémoví administrátoři nastavili pravidla pro filtrování e-mailů, aby hluk zastavili, a váš monitorovací systém se brzy stane nepoužitelným.

Je důležité zachytit a uložit všechny možné metriky, protože budete rádi, že je budete mít, když se pokusíte zjistit, co se v systému změnilo. Také, když se objeví podivný problém, budete moci ukázat na graf a snadno sledovat změnu zátěže serveru.

Lidé obvykle upozorňují na věci, jako je poměr přístupů do vyrovnávací paměti nebo počet dočasných tabulek vytvořených za sekundu. Problém je v tom, že pro takový poměr neexistuje žádná rozumná hranice. Kromě toho se vhodná prahová hodnota liší mezi servery a čas od času se mění vaše práce.

V důsledku toho upozorňujte střídmě a pouze za podmínek, které naznačují jednoznačný, řešitelný problém. Nízký poměr přístupů do vyrovnávací paměti například není proveditelný a ani to neznamená skutečný problém, ale server, který nereaguje na pokus o připojení, je skutečný problém, který je třeba vyřešit.

Krok 9:Naučte se tři pravidla indexování

Toto je nejvíce nepochopené téma v databázích, protože existuje mnoho způsobů, jak zjistit, jak fungují indexy a jak je server používá. Pokud jsou indexy správně navrženy, slouží v databázovém serveru třem důležitým účelům;

  1. Namísto jednotlivých řádků umožňují indexy serveru najít skupiny sousedních řádků. Mnoho lidí si myslí, že účelem indexů je najít jednotlivé řádky, ale nalezení jednotlivých řádků vede k náhodným operacím s diskem, čímž je server velmi pomalý. Hledání skupin řádků je mnohem lepší a zajímavější než hledání řádků po jednom.
  2. Umožňuje také serveru vyhnout se řazení čtením řádků v požadovaném pořadí. Čtení řádků je na rozdíl od řazení mnohem rychlejší a méně nákladné.
  3. Indexy také umožňují serveru uspokojit celé dotazy pouze z indexu, takže není nutné vůbec přistupovat k tabletu. Toto je různě známé jako covey index nebo dotaz pouze na index.

Krok 10:Využijte odborné znalosti svých kolegů

Nevadilo by ti to neudělat sám? Hádat nad problémy a dělat to, co se vám zdá logické a rozumné, může fungovat většinou, ale ne vždy. Místo toho vybudujte síť zdrojů souvisejících s MySQL, která přesahuje sady nástrojů a průvodce řešením problémů.

Lidé jsou neuvěřitelně dobře informovaní, kteří číhají na seznamech adres, na fórech a tak dále. Konference, veletrhy a akce místních uživatelských skupin navíc poskytují cenné příležitosti k získání informací a budování vztahů s kolegy, kteří vám mohou pomoci.

Pro několik málo lidí, kteří hledají nástroje, které doplní tyto tipy, se můžete podívat na Průvodce konfigurací Percona pro MySQL a monitorovací pluginy MySQL Percona.

Při generování základní linie vám může pomoci průvodce konfigurací. my.cnf pro nový server lepší než vzorové soubory dodávané se serverem.

Poradce dotazů, který je lepší než vzorové soubory dodávané se serverem. Poradce analyzuje váš SQL, aby vám pomohl odhalit potenciálně destruktivní vzorce, jako jsou stránkovací dotazy (tip 7).

Monitorovací zásuvné moduly Percona jsou sady zásuvných modulů pro monitorování a vytváření grafů, které vám pomohou dychtivě ukládat statistiky a neochotně upozorňovat (krok č. 8). Všechny tyto nástroje jsou volně dostupné.

Výhody ladění výkonu

Primární výhodou je, že vám umožní vyhnout se nadměrnému poskytování a snížit náklady správným nastavením velikosti vašich služeb. Poskytuje vám také přehled o tom, zda přesun datového úložiště nebo přidání kapacity serveru zlepší výkon či nikoli, a pokud ano, o kolik.

Jakmile je databáze správně vyladěna, poskytuje příznivé výsledky výkonu se skvělými funkcemi. Nejen, že snižuje nežádoucí zatížení úloh, ale také optimalizuje databázi MySQL pro rychlejší načítání dat.

Další nastavení se mohou lišit v závislosti na vaší pracovní zátěži nebo hardwaru. Cílem je poskytnout vám několik možností ladění výkonu MySQL, abyste rychle získali rozumnou konfiguraci MySQL, aniž byste trávili příliš mnoho času změnou nezákladních nastavení nebo čtením dokumentace, abyste pochopili, která nastavení jsou pro vás důležitá.

Závěr

Závěrem lze říci, že ladění výkonu nabízí mnoho výhod a je doporučeno při práci s velkými objemy dat, aby se zvýšila efektivita vašeho serveru. Podle tipů uvedených v tomto článku budete moci pohodlně provádět ladění výkonu MySQL na vašem serveru a databázích.


  1. Sloupec 'Mary' neexistuje

  2. Jak mohu v této tabulce najít duplicitní po sobě jdoucí hodnoty?

  3. Jak FROM_BASE64() funguje v MariaDB

  4. Příklad ze skutečného života, kdy použít OUTER / CROSS APPLY v SQL