MySQL - typy tabulek

Přehled typů tabulek v databázovém systému MySQL - MyISAM, MRG_MYISAM, MEMORY (HEAP), InnoDB, ARCHIVE, CSV.

Datum: 02.10.2010


Primárním úkolem databázových systémů je zpřístupnit klientským systémům data a tato data spravovat, organizovat a zajišťovat jejich konzistenci. Na způsobu vnitřní reprezentace dat v databázi velmi závisí rychlost vykonávání dotazů nad databází. Tabulky mohou být optimalizovány pro příkaz SELECT (a příkazy vkládání jsou relativně pomalejší) anebo hledají kompromis. Záleží na vývojáři, aby zvolil správný databázový systém a typ tabulky.

MySQL v poslednch verzích řady 5 nabízí hned několik typů tabulek. Každý typ má své výhody a nevýhody a hodí se pro různé situace. Jedním z hlavních rozdílů je podpora transakcí.

Typ MyISAM

Nejpoužívanější typ tabulek v systému MySQL. Poprvé se objevil v MySQL 3.23.0. Tyto tabulky nepodporují transakce, ale na druhou stranu jsou velmi rychlé a typ MyISAM je optimalizován pro dotazy SELECT. Typ MyISAM se dále rozděluje do tří podtypů.

  • Statické tabulky se vyznačují tím, že neobsahují žádný datový typ s proměnnou délkou (varchar, text, blob a jejich varianty). V tom případě je pro každý údaj v tabulce pevně vyhrazené místo a nedochází ke fragmentaci. I proto jsou všechny dotazy na tuto tabulku mnohem rychlejší.
  • Dynamické tabulky obsahují nějaké datové typy s proměnnou délkou a každý takový údaj musí navíc obsahovat informace o své délce a o svém rozmístění. Dochází také z fragmentaci částí záznamu a opět je navíc na ně třeba uchovávat odkazy..

Typ MRG_MYISAM

Tento typ je jakási nadstavba nad typ MyISAM. Slouží k rozložení zátěže tím, že data rozdělíme do více identických tabulek a každou můžeme např. umístit na jiný pevný disk. Každá tato tabulka má pak svá vlastní data a ke všem najednou se přistupuje pod jejich společným aliasem anebo můžete samozřejmě obejít MERGE tabulku a pracovat s jednotlivými tabulkami přímo. Tento typ také může řešit problém s limitem velikosti souborů v některých operačních systémech. Nevýhodou jsou např. nemožnost použití FULLTEXT indexu nad všemi tabulkami.

Typ MEMORY (HEAP)

Zvláštností tohoto typu je, struktura tabulky je uložena běžným zůsobem v souborech na disku, ale samotná data se uchovávají pouze v paměti. Z toho plyne, že slouží pouze k dočasnému uchovávání mezivýsledků, cache apod. Co se týče rychlosti, jednoznačně vítězí. Ale protože jsou data jen v paměti, můžeme o ně vypnutím či pádem systému přijít. Jsou zde však některá omezení - nelze použít sloupce typu BLOB ani TEXT, protože data tabulky jsou uložena vždy v pevném formátu (statickém).

Typ InnoDB

Tyto tabulky používají transakce a lze využívat příkazy BEGIN, COMMIT a ROLLBACK. Jsou optimalizovány pro relativně větší rychlost dotazů INSERT a UPDATE oproti typu MyISAM a pro práci s velkým objemem dat. Specialitou InnoDB oproti mnohým dalším transakčním uložištím je schopnost zamykání záznamů na úrovni řádků.

Budoucnost InnoDB v MySQL je však v současné době nejistá. InnoDB totiž nevyvíjí samotná společnost MySQL AB, ale společnost Innobase Oy Inc., kterou před nedávnem koupila Oracle a panují zde obavy, že InnoDB přestane být volným produktem.

Ve stručnosti o transakcích. U některých důležitých změn v databázi musíme zabezpečit, že se celá sada dotazů vykoná celá anebo se nestane nic. Nesmí se stát, že v polovině příkazů dojde k chybě a nebude vše dokončeno. V té situaci jsou řešením transakce. Transakci zahájíme příkazem BEGIN, vykonáme příkazy a pak celou transakci buď potvrdíme příkazem COMMIT, anebo celou zrušíme příkazem ROLLBACK. Až do potvrzení transakce se změny pro ostatní databázové klienty nijak neprojeví.

Typ ARCHIVE

Podle názvu nám dojde, že se jedná o uložiště archivních dat, ke kterým budeme jen velice zřídka přistupovat a potřebujeme, aby měly co nejmenší objem. Veškerá data jsou komprimována, lze provádět pouze příkazy SELECT a INSERT (data se vkládají na konec), nelze použít DELETE, REPLACE a UPDATE, nepoužívají se žádné indexy (dotaz SELECT máza následek průchod celou tabulkou a dekompresi zkoumaných dat).

Typ CSV

Data jsou ukládána v textovém formátu CSV, každý záznam je na jednom řádku, sloupce odděleny čárkami. Nejsou podporovány indexy.

Odkazy

Diskuze k článku (4)

KompreseOndrej08.04.16 12:22
  Re: KompreseDavid Cigánek, WEDOS12.04.16 11:19
MySQL - práce s tabulkamiBohuslav Kubeš29.08.15 09:07
  Re: MySQL - práce s tabulkamiRoman Mondek, WEDOS29.08.15 11:58

Přihlášení zákazníka

Nemáte ještě zákaznický účet? Registrace

Copyright © WEDOS, 2017

Facebook RSS