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

MySQL Partitioning / Sharding / Splitting - jakou cestou se vydat?

Jakmile se tabulka 42 GB již nevejde do paměti, určitě začnete narážet na problémy. Ve skutečnosti, jakmile se již nevejde do paměti, výkon se extrémně rychle sníží. Jedním ze způsobů testování je umístit tuto tabulku na jiný počítač s menší pamětí RAM a zjistit, jak špatně funguje.

Toto je nesprávné. Partitioning (buď prostřednictvím funkce v MySQL 5.1, nebo totéž pomocí tabulek MERGE) může poskytnout významné výhody z hlediska výkonu, i když jsou tabulky na stejném disku.

Řekněme například, že na svém velkém stole spouštíte SELECT dotazy s použitím časového rozsahu. Pokud je tabulka celá, bude dotaz nucen prohledat celou tabulku (a při této velikosti může být pomalé i používání indexů). Výhodou rozdělení je, že vaše dotazy poběží pouze na oddílech, kde je to nezbytně nutné. Pokud má každý oddíl velikost 1 GB a váš dotaz potřebuje pouze přístup k 5 oddílům, aby se splnil, kombinovaná tabulka 5 GB je pro MySQL mnohem snazší, než s monstrózní 42GB verzí.

Jedna věc, kterou si musíte položit, je způsob dotazování na data. Pokud existuje možnost, že vaše dotazy budou potřebovat přístup pouze k určitým částem dat (tj. časovému období nebo rozsahu ID), bude prospěšné nějaké rozdělení.

Slyšel jsem, že s dělením MySQL 5.1 stále existuje určitá chyba, zejména v souvislosti s výběrem správného klíče MySQL. Tabulky MERGE mohou poskytovat stejnou funkcionalitu, i když vyžadují trochu vyšší režii.

Doufám, že to pomůže...hodně štěstí!



  1. Seznam všech sloupců identity v databázi SQL Server:sys.identity_columns

  2. Najděte duplicitní řetězce v databázi

  3. SQL Server REPLACE() vs TRANSLATE():Jaké jsou rozdíly?

  4. Nastavení tabulky zeměpisné šířky a délky v MySQL