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

Formát řádku MySQL:Rozdíl mezi pevným a dynamickým?

Na rozdílu záleží opravdu jen pro MyISAM, ostatní úložné motory se o rozdíl nestarají.EDIT: Mnoho uživatelů poznamenalo, že InnoDB se stará:odkaz 1 od parní , odkaz 2 od Kaana .

MyISAM s řádky s pevnou šířkou má několik výhod:

  1. Žádná fragmentace řádků:Pomocí řádků s proměnnou šířkou je možné získat jednotlivé řádky rozdělené do více částí v datovém souboru. To může zvýšit vyhledávání disku a zpomalit operace. Je možné ji defragmentovat pomocí OPTIMIZE TABLE, ale to není vždy praktické.

  2. Velikost ukazatele datového souboru:V MyISAM existuje koncept ukazatele datového souboru, který se používá, když potřebuje odkazovat na datový soubor. Toto se například používá v indexech, když odkazují na to, kde se řádek skutečně nachází. U pevných velikostí šířky je tento ukazatel založen na odsazení řádku v souboru (tj. řádky jsou 1, 2, 3 bez ohledu na jejich velikost). S proměnnou šířkou je ukazatel založen na bajtovém offsetu (tj. řádky mohou být 1, 57, 163). Výsledkem je, že u velkých tabulek musí být ukazatel větší, což pak zvyšuje potenciálně mnohem více režie tabulky.

  3. Snazší oprava v případě korupce. Vzhledem k tomu, že každý řádek má stejnou velikost, pokud se vaše tabulka MyISAM poškodí, je mnohem snazší ji opravit, takže ztratíte pouze data, která jsou skutečně poškozená. S proměnnou šířkou je teoreticky možné, že se ukazatele proměnné šířky pokazí, což může mít za následek špatné umístění dat.

Nyní je hlavní nevýhodou pevné šířky to, že plýtvá více místem. Například musíte místo polí VARCHAR použít pole CHAR, takže vám zabere místo navíc.

Normálně nebudete mít příliš na výběr ve formátu, protože je diktován na základě schématu. Mohlo by však stát za to, pokud máte jen několik varcharů nebo jeden blob/text, abyste se pokusili na toto optimalizovat. Zvažte například přepnutí jediného varcharu na znak nebo rozdělte objekt blob do jeho vlastní tabulky.

Ještě více si o tom můžete přečíst na:

http://dev.mysql.com/doc/refman /5.0/cs/static-format.html

http://dev.mysql.com/doc/refman /5.0/cs/dynamic-format.html



  1. Jak hledat hodnotu oddělenou čárkou

  2. MySQL – pokud to začíná číslem nebo speciálním znakem

  3. JSON_SEARCH() – Najděte cestu k řetězci v dokumentu JSON v MySQL

  4. Případ použití pro sp_prepare / sp_prepexec