1/ISAM
ISAM je dobře definovaný a časem prověřený přístup ke správě datových tabulek, který je navržen tak, aby databáze byla dotazována mnohem častěji, než byla aktualizována. Díky tomu ISAM provádí čtení rychle a nezabírá mnoho paměti a úložných zdrojů. Dvě hlavní nevýhody ISAM jsou, že nepodporuje zpracování transakcí a není odolný vůči chybám: pokud vám dojde k pádu pevného disku, datové soubory nelze obnovit. Pokud používáte ISAM pro kritické aplikace, musíte vždy zálohovat všechna svá data v reálném čase a MySQL takové zálohovací aplikace díky své replikační funkci podporuje.
2/InnoDB
Poskytuje funkci řízení transakcí, která zajišťuje, že sada příkazů je úspěšně vykonána, nebo když dojde k chybě příkazu, výsledek všech příkazů je vrácen zpět, lze si představit, že schopnost řízení transakcí je v e-bankovnictví velmi důležitá. Podpora funkcí COMMIT, ROLLBACK a dalších transakcí. Nejnovější verze Mysql už plánuje odstranit podporu BDB ve prospěch InnoDB.
MyIASM je nová verze IASM tabulek s následujícími rozšířeními: Přenosnost na binární úrovni. Index sloupců NULL. Proměnné řádky mají méně fragmentů než tabulky ISAM. Podpora pro velké soubory. Lepší komprese indexu. Je lepší mít statistické rozdělení? Lepší a rychlejší auto_increment zpracování.
Zde jsou některé podrobnosti a konkrétní rozdíly v implementaci:
1. InnoDB nepodporuje indexy typu FULLTEXT. 2. Tabulky nejsou uloženy v InnoDB specifické řádky, tedy vykonat select count(*) z tabulky, InnoDB prohledá celou tabulku, aby vypočítal, kolik řádků obsahuje, ale MyISAM jednoduše přečte uložené řádky. Všimněte si, že když příkaz count(*) obsahuje kde podmínka, operace obou tabulek je stejná. 3. Pro pole AUTO_INCREMENT typu musí být index obsahující pouze toto pole zahrnut v InnoDB, ale v tabulce MyISAM je možné vytvořit federovaný index s dalšími poli. 4. DELETE Z tabulky InnoDB tabulku neobnovuje, ale maže ji řádek po řádku. 5. TABULKA NAČÍTÁNÍ Z Operace MASTER nefunguje pro InnoDB, řešením je nejprve změnit tabulku InnoDB na tabulku MyISAM, importovat data a poté je změnit do tabulky InnoDB, ale není použitelná pro tabulky, které využívají další funkce InnoDB (například cizí klíče).
Navíc zámek řádků tabulky InnoDB není absolutní; pokud MySQL nedokáže určit rozsah, který má být prohledán při vykonání SQL příkazu, tabulka InnoDB také uzamkne celou tabulku, například aktualizací Sada tabulky num=1, kde se jmenuje například "a%"
Žádná tabulka není všemocná, pouze volbou vhodného typu tabulky pro typ podnikání můžeme maximalizovat výkonnostní výhody MySQL.
MySQL Když správce vytvoří databázi, tabulka se ve výchozím nastavení nastaví na typ InnoDB.
InnoDB,MyISAM Jaký je rozdíl mezi těmito dvěma typy: Typ MyISAM nepodporuje pokročilé zpracování, jako je zpracování transakcí, zatímco typ InnoDB ano. Tabulky typu MyISAM kladou důraz na výkon, který je o několik stupňů rychlejší než typ InnoDB, ale neposkytuje transakční podporu, zatímco InnoDB nabízí pokročilé databázové funkce, jako je podpora transakcí, cizí klíče atd.
Binární datové soubory typu MyISAM lze migrovat mezi různými operačními systémy. To znamená, že jej lze přímo zkopírovat z Windows systému na linux.
Upravte typ motoru tabulky:
ALTER TABULKA TABULKOVÝ ENGINE = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed Metoda sekvenčního přístupu Je to standardní metoda ukládání záznamů a souborů. Ve srovnání s jinými úložnými enginy má MyISAM většinu nástrojů pro kontrolu a opravu tabulek. Tabulky MyISAM lze komprimovat a podporují vyhledávání v plném textu. Nejsou transakční bezpečné a nepodporují cizí klíče. Pokud je něco vráceno zpět, způsobí to neúplné vrácení a není to atomové. Pokud je provedeno velké množství poprav TheSELECT, MyISAM je lepší volba.
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
U typů InnoDB, které něco podporují, je hlavním důvodem ovlivňujícím rychlost to, že výchozí nastavení AUTOCOMMIT je zapnuté a program explicitně nevolá BEGIN Spusťte transakci, což vede k automatickému commitu pro každé vložení, což výrazně ovlivňuje rychlost. Můžete zavolat start před spuštěním SQL a více SQL vytvoří jednu věc (i když autocommit zahraje lze také zapnout), což výrazně zlepší výkon.
1. Zobrazit informace v tabulce, včetně typu použitého enginu, kódování znaků, struktury tabulky atd
Použijte tento příkaz
mysql> zobrazit vytvořit tabulku T1; --t1 je název tabulky
2. Následující příkaz lze provést pro přepnutí netransakčních tabulek na transakce (data nejsou ztracena), tabulky innodb jsou bezpečnější než tabulky myisam: Alter Table T1 type=innodb; --t1 je název tabulky
3. Tabulku innodb nelze table_name příkazem repair table a myisamchk -r Ale můžeš použít kontrolní stůl t1 a databáze mysqlcheck [OPTIONS] [tabulky]
4. Do příkazového řádku byly přidány následující parametry, aby se spustila databáze mysql a všechny nově vydané datové tabulky MySQL byly výchozím nastavením transakcí ( Ovlivňuje pouze příkaz create. ) --default-table-type=InnoDB
5. Dočasná změna výchozího typu tabulky může být provedena takto: set table_type=InnoDB;
MyISAM Výhody: vysoká rychlost, méně místa na disku; Využití disku v databázi nebo tabulce lze zjistit buď kontrolou velikosti příslušného souboru (složky) operačním systémem, nebo použitím SQL příkazu SHOW TABLE STATUS Nevýhody: Nedostatek mechanismu integrity dat, tj. žádná podpora transakcí a cizích klíčů
InnoDB Výhody: Podpora transakcí a cizích klíčů a kompletní mechanismus integrity dat. Můžete použít ZOBRAZIT STAV TABULKY ke kontrole obsazenosti disku v knihovně nebo tabulce Nevýhody: ultra-pomalá rychlost, obsazené velké místo na disku; Všechny knihovny jsou uloženy v jednom (obvykle) nebo několika souborech a operační systém nemůže určit, kolik místa má knihovna nebo tabulka
BDB Výhody: Podpora transakcí, nepodpora cizích klíčů, protože na základě podpory transakcí mohou být cizí klíče implementovány nepřímo na straně klienta (což může být serverová strana koncového zákazníka, například PHP), takže integrita dat je stále zaručena; Nevýhody: pomalá rychlost, vysoké využití disku; Nelze dotazovat na obsazenost místa v databázi nebo tabulce pomocí ZOBRAZIT STAV TABULKY. Operační systém dokáže pochopit velikost odpovídající složky knihovny nebo příslušného souboru tabulky, ale protože tabulka BDB musí vždy generovat logovací soubor a skutečná obsazenost disku by měla logovací soubor zahrnovat, velikost knihovny nebo tabulky je vždy menší než skutečné místo operačního systému.
|