MySQL (40) - další typy tabulek
MySQL nabízí několik typů tabulek pro uložení dat. Některé jsme vzpomenuli minule, na jiné dojde řada dnes.
30.9.2005 08:00 |
Petr Zajíc
| Články autora
| přečteno 22476×
V tomto díle seriálu budeme pokračovat ve výčtu a rozboru těch typů
tabulek, které MySQL nabízí.
Tabulky umožňující transakce
MySQL nabízí dva typy tabulek, které umožňují transakční zpracování.
O transakcích ještě v seriálu řeč nebyla, ale na teorii se můžete podívat
do "sesterského" seriálu o PostgreSQL. Teorie databázových transakcí je
totiž pro všechny databáze vlastně stejná. U transakcí jde o to, že
jeden nebo více příkazů pro databázi může být považováno za logický
celek a jako takový mohou být potvrzeny nebo zamítnuty. Následující dva
typy tabulek podporují transakce:
InnoDB
Aby mohla MySQL podporovat InnoDB, musí být zkompilována s jejich
podporou. To je od verze 4.0 MySQL již samozřejmé. Tabulky InnoDB
používají při zpracování dat techniku zamykání dat na úrovni řádků.
Hodí se pro prostředí, kde je vysoký podíl akčních dotazů vůči
výběrovým (tedy, často se data mění a méně často vybírají). Technologii
InnoDB vyvinula finská firma Innobase
Oy.
Tabulky InnoDB nejsou na databázovém serveru uloženy v jednotlivých
souborech. Spíše jsou v prostoru
tabulek, který je navenek reprezentován jako jediný soubor
(typicky ibdata1) v adresáři data vaší instalace MySQL.
Pokud budete chtít založit tabulku typu InnoDB, použijte definiční
příkaz ve stylu:
create table tabulka (id
int, nazev varchar(30)) type=innodb;
InnoDB je možné doladit pomocí celé řady konfiguračních
voleb a spustit s celou řadou parametrů.
Nebudeme je tady do podrobna rozebírat, pouze připomenu zásady, kterými
byste se při ladění výkonu InnoDB měli řídit:
- Všechny případné testy dělejte na podobném objemu dat, jaký bude
používat reálný systém.
- Jestliže půjde o hodně zatěžovaný systém, je třeba simulovat
pečlivě i zátěž - například zapisováním dat do tabulky z více klientů
najednou a podobně.
- Máme funkci
BENCHMARK
- InnoDB tabulky lze v dotazech spojovat s tabulkami jiných typů -
MyISAM například - ale můžete tím přijít o výhodu transakcí
Je rovněž dobré vědět, že tabulky InnoDB mají svá omezení. Nemůžete
na nich například provádět fulltextové vyhledávání. Kompletní seznam
omezení tabulek tohoto typu najdete v dokumentaci
k MySQL.
BDB
Rovněž tabulky typu BDB podporují transakce. BDB je zkratka z
"Berkeley database" a jedná se o databázi, původně vyvinutou na
University of California ve městě Berkeley. Teď se o vývoj BDB stará
firma Sleepycat software. O
použití jádra BDB v MySQL platí zhruba to, co bylo řečeno o InnoDB -
totiž že se hodí pro servery s vysokým podílem akčních dotazů oproti
výběrovým. Přestože je BDB sama o sobě vyspělý produkt, rozhraní mezi
MySQL a BDB je stále ve fázi intenzivního vývoje a proto by tento typ
tabulek měl být nasazován opatrně.
Tabulku typu BDB založíte použitím následujícího definičního příkazu:
create table tabulka (id
int, nazev varchar(30)) type=bdb;
Manuál k MySQL obsahuje volby, s
nimiž je možné upravit chování tabulek typu BDB a omezení,
které BDB tabulky mají.
Upřímně řečeno nechápu, proč se MySQL zabývá souběžnou podporou
InnoDB a BDB, když jejich filozofie je tak podobná. Pokud byste někdo
měl nějaké zkušenosti nebo srovnání výhod a nevýhod tabulek BDB oproti
InnoDB, můžete přispět do diskuse pod článkem.
Méně časté typy tabulek
S tabulkami, které jsme až dosud probrali se můežte setkávat
relativně často. Zejména to platí o typech MyISAM a InnoDB. Existují
však i další, exotické typy tabulek. Kráce je shrňme.
Memory
Tabulky typu MEMORY (synonymum je HEAP) existují pouze v paměti
počítače. Abych byl přesný dodám, že v paměti jsou jen data, definice tabulky je uložena na
disku. To znamená, že při restartu serveru je obsah tabulek HEAP
ztracen. Asi si říkáte, k čemu taková vymoženost vůbec je - ale tabulky
MEMORY mohou mít své opodstatnění.
Především, díky tomu, že jsou celé v paměti, může být práce s HEAP
tabulkami velmi rychlá. Pak je třeba vzít v úvahu, že tabulky typu HEAP
mohou být ideálními kandidáty na dočasné (temporary) tabulky. A konečně
je třeba vědět, že HEAP tabulku lze vytovřit jako kopii existující
"trvalé" tabulky takto:
create table
tabulka_v_pameti type=memory select * from tabulka_na_disku;
Také tyto tabulky mají svá specifika a omezení, o nichž byste si
mohli přečíst v manuálu.
Federated
Tento naprosto nový typ tabulek lze použít až od verze 5.0.3 MySQL.
Funguje tak, že definice tabulky určí pouze její strukturu, data jsou
umístěna na vzdáleném serveru a při dotazu na tuto tabulku jsou
přenesena po síti na požádání. U tabulek typu FEDERATED je při definici
tabulky třeba zadat informace sloužící k připojení ke vzdálenému
serveru:
create table tabulka (id
int, nazev varchar(30))
connection='mysql://jmeno:heslo@192.168.0.2:3306/database/tablename';
Myšlenka je to zajímavá. Nicméně než se něco takového rozšíří, je
třeba mít na paměti následující věci:
- Definice vytvářené tabulky musí odpovídat definici vzdálené
tabulky
- Výkon takových tabulek bude notnou měrou záviset na rychlosti
spojení mezi servery
- Součástí definice tabulky jsou připojovací informace ke
vzdálenému serveru. Pozor na bezpečnost.
CSV
Jak asi tušíte, tento typ tabulek ukládá data oddělené čárkami do
textového souboru. Je to méně obvyklý způsob, funguje od verze 4.1.4 a
musí se při kompilaci MySQL povolit (ve výchozím stavu není k dispozici
a není k dispozici ani u typických binárních distribucí). CSV má více
nevýhod - například takto uložená data nelze indexovat.
Závěr
Takový počet typů tabulek u jednoho produktu vás možná překvapil (a
to jsem některé exotické typy vynechal). Nic si z toho nedělejte, v
praxi se používají většinou pouze dva. MyISAM na data, z nichž se často
vybírá pomocí SELECT a InnoDB na data, která se často mění. Je to sice
zjednodušující, ale pro orientaci by to mělo stačit.
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|