ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
MySQL (40) - další typy tabulekMySQL nabízí několik typů tabulek pro uložení dat. Některé jsme vzpomenuli minule, na jiné dojde řada dnes. 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í transakceMySQL 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: InnoDBAby 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:
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. BDBRovněž 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. MemoryTabulky 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. FederatedTento 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))
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:
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ěrTakový 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.
Související články
Předchozí Celou kategorii (seriál) Další
MySQL (1) - pestrý svět databází
MySQL (2) - Instalujeme databázi MySQL MYSQL (3) Instalujeme MySQL podruhé MySQL (4) - něco terminologie MySQL (5) - tajuplné SQL MySQL (6) - Ukládáme řetězce MySQL (7) - hrátky s čísly MySQL (8) - Ukládání datumů MySQL (9) - Další datové typy MySQL (10) - tvorba databáze. Základy DDL MySQL (11) - vytváříme tabulky MySQL (12) - tipy k tvorbě tabulek MySQL (13) - Vkládáme data MySQL (14) - Upravujeme data MySQL (15) - Odstraňujeme data MySQL (16) - Tipy a triky k manipulaci s daty MySQL (17) - vybíráme data MySQL (18) - Filtrujeme data MySQL (19) - Řadíme data MySQL (20) - spojení více tabulek MySQL (21) - klauzule JOIN MySQL (22) - tipy a triky ke spojování tabulek MySQL (23) - relace 1:N a N:N MySQL (24) - Seskupujeme záznamy MySQL (25) - hrátky se seskupenými záznamy MySQL (26) - Poddotazy MySQL (27) - Složitější dotazy MySQL (28) - Dotazy pro pokročilé MySQL (29) - Vracení nejvyšších záznamů MySQL (30) - průběžné součty MySQL (31) - Indexy MySQL (32) - ještě k indexům MySQL (33) - Příkaz UNION MySQL (34) - větvení kódu a pivotní tabulky MySQL (35) - vestavěné funkce MySQL (36) - Regulární výrazy MySQL (37) - použití fulltextového vyhledávání MySQL (38) - Fulltext a praxe MySQL (39) - typy tabulek v MySQL MySQL (41) - Transakce MySQL (42) - ještě k transakcím MySQL (43) - Uložené procedury MySQL (44) - parametry uložených procedur MySQL (45) - větvení kódu uložených procedur MySQL (46) - Triggery MySQL (47) - Triggery a praxe MySQL (48) - UDF MySQL (49) - pohledy MySQL (50) - Pohledy podruhé MySQL (51) - Metadata MySQL (52) - A co zálohování? MySQL (53) - SELECT INTO OUTFILE MySQL (54) - zálohování MySQL z webu MySQL (55) - zálohování MySQL z pohledu správce MySQL (56) - Obnova zálohovaných dat MySQL (57) - Ach, ta čeština MySQL (58) - čeština v praxi MySQL (59) - české řazení MySQL (60) - řádkový klient MySQL (61) - Oprávnění MySQL (62) - Oprávnění podruhé MySQL (63) - jemné nastavení práv MySQL (64) - nad dotazy čtenářů MySQL (65) - Ladíme server MySQL (66) - Ještě k ladění serveru MySQL - (67) MySQL (68) - Závěr MySQL (69) - Prepared Statements Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |