it-swarm-eu.dev

Je běžné kombinovat tabulky InnoDB a MyISAM na stejném serveru?

Na serveru s 8 GB RAM mám spuštěnou jedinou databázi přibližně 4,5 GB. Převážná většina tabulek je MyIsam (asi 4,3 GB), ale brzy budu chystám se převádět některé z nich na InnoDB. (Bude to pomalý proces, nejprve se zaměříme na ty tabulky, které jsou náročné na zápis).

Je něco špatného s provozováním dedikovaného serveru, kde existují oba typy paměťových modulů?

21
Derek Downey

Neexistuje nic špatně s použitím více paměťových modulů na stejném fyzickém stroji, pokud rozumíte kladům a záporům každého z nich. U všech typů úložiště doplňků existují úvahy o výkonu, omezení funkcí a případy použití.

Například, pokud máte malou tabulku s 90% zápisů, můžete zvolit MyISAM. Pokud lze data snadno regenerovat a jedná se o malou tabulku, řekněme pro zařazení do fronty, můžete zvolit Paměť. Pokud máte tabulku, která čte 90% a data musí být tam, když ji hledáte, pravděpodobně byste si vybrali úložný stroj, který podporuje transakce a konfigurovatelnou atomicitu, jako je například InnoDB. Pokud chcete přístupnost prostřednictvím systému souborů bez poškození dat, můžete zvolit CSV.

Nicméně můžete bezpečně používat více paměťových modulů v rámci stejného schématu i fyzického hostitele.

Dovolte mi však poznamenat, že vaše vyrovnávací paměti hrají roli v celé této nepořádku. Pokud používáte MyISAM i InnoDB, musíte si dát pozor, aby váš key_buffer a innodb_buffer_pool nesouhlasily. To bude vyžadovat pečlivé plánování z vaší strany, ale to je to, co děláme.

18
randomx

Nemohu vám říct, jestli se jedná o běžnou praxi. Mohu říci o své vlastní zkušenosti.

Vždy používám nejlepší nástroj pro tuto práci, takže neustále míchám motory. Většina mých projektů používá MyISAM jako výchozí motor.

Když potřebuji speciální funkce dostupné pouze na InnoDB, jdu na to.

Když je tabulka většinou jen pro čtení, vyberu si Archive engine, než budu moci mrkat.

S vědomím, že server stroje má dostatek paměti, jsou všechna moje dočasná data uložena v tabulkách haldy.

V minulosti jsem viděl několik zpomalení míchání MyISAM a InnoDB, ale nejedná se o specifický problém MySQL. Je to problém designu, který se nezdá, když používáte jen jeden motor. Vlastní použití nesprávného motoru způsobí další zpomalení, nezáleží na tom, jestli je to jen MyISAM, jen InnoDB nebo kombinace obou. Je těžké definovat vzorec, abyste věděli, kdy dojde ke zpomalení. Mohly by vám to říct jen skutečné testy.

Samozřejmě jste nemohli zachovat integritu a konzistenci míchání InnoDB a MyISAM na jedinečný dotaz.

7
Maniero

Snažím se vyhnout míchání tabulek MyISAM a InnoDB ve stejné databázi, ale je to spíše z důvodů rozumných než praktických. Považuji však za užitečné mít databázi s tabulkami MyISAM pro fulltextové vyhledávání, abych je mohl spustit na webech. Uchování v samostatné databázi s cizím klíčem pro každou položku usnadňuje všem vývojářům pracujícím na DB, aby viděli, co se děje.

0
Kenzo