Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14231|Odpoveď: 1

[Zdroj] Rozdiel medzi engine=innodb a engine=myisam v mysql

[Kopírovať odkaz]
Zverejnené 16. 7. 2017 11:04:57 | | |
1/ISAM

ISAM je dobre definovaný a overený prístup k správe dátových tabuliek, ktorý je navrhnutý tak, že databáza sa dotazuje oveľa častejšie, než sa aktualizuje. V dôsledku toho ISAM vykonáva čítania rýchlo a nezaberá veľa pamäte a úložných zdrojov. Dve hlavné nevýhody ISAM sú, že nepodporuje spracovanie transakcií a nie je odolný voči chybám: ak vám spadne pevný disk, dátové súbory sa nedajú obnoviť. Ak používate ISAM pre kritické aplikácie, vždy musíte zálohovať všetky svoje dáta v reálnom čase a MySQL takéto zálohovacie aplikácie dokáže podporiť vďaka svojej replikačnej funkcii.

2/InnoDB

Poskytuje funkciu riadenia transakcií, ktorá zabezpečuje, že súbor príkazov je úspešne vykonaný, alebo keď dôjde k chybe príkazu, výsledok všetkých príkazov sa vráti späť; je možné si predstaviť, že schopnosť riadenia transakcií je v e-bankovníctve veľmi dôležitá. Podpora COMMIT, ROLLBACK a ďalších transakčných funkcií. Najnovšia verzia Mysql už plánuje odstrániť podporu BDB v prospech InnoDB.

MyIASM je nová verzia IASM tabuliek s nasledujúcimi rozšíreniami:
Prenosnosť na binárnej úrovni.
Index stĺpca NULL.
Pre premenné riadky je menej fragmentov ako pre ISAM tabuľky.
Podpora veľkých súborov.
Lepšia kompresia indexu.
Je lepšie mať štatistické rozdelenie?
Lepšie a rýchlejšie auto_increment spracovanie.

Tu sú niektoré detaily a konkrétne rozdiely v implementácii:

1. InnoDB nepodporuje indexy typu FULLTEXT.
2. Tabuľky sa neukladajú v InnoDB
konkrétne riadky, teda vykonať select count(*) z
InnoDB prehľadá celú tabuľku, aby vypočítal, koľko riadkov obsahuje, ale MyISAM jednoducho prečíta uložené riadky. Všimnite si, že keď príkaz count(*) obsahuje
kde podmienka, operácia oboch tabuliek je rovnaká.
3. Pre polia AUTO_INCREMENT typu musí byť index obsahujúci iba toto pole zahrnutý v InnoDB, ale v tabuľke MyISAM je možné vytvoriť federovaný index s inými poľami.
4. DELETE
Z tabuľky InnoDB nevytvára tabuľku znova, ale maže ju riadok po riadku.
5. NAČÍTAVACIA TABUĽKA Z
Operácia MASTER nefunguje pre InnoDB, riešením je najprv zmeniť tabuľku InnoDB na tabuľku MyISAM, importovať dáta a potom ich zmeniť na tabuľku InnoDB, ale nie je použiteľná pre tabuľky, ktoré používajú ďalšie funkcie InnoDB (napríklad cudzie kľúče).

Navyše, riadkový zámok tabuľky InnoDB nie je absolútny, ak MySQL nedokáže určiť rozsah na prehľadanie pri vykonávaní SQL príkazu, tabuľka InnoDB tiež uzamkne celú tabuľku, napríklad aktualizáciou
Tabuľková sada num=1, kde názov je napríklad "a%"

Žiadna tabuľka nie je všemohúca, len výberom vhodného typu tabuľky pre typ podniku môžeme maximalizovať výkonnostné výhody MySQL.

MySQL
Keď administrátor vytvorí databázu, tabuľka sa predvolene nastaví na typ InnoDB.

InnoDB,MyISAM
Aký je rozdiel medzi týmito dvoma typmi: Typ MyISAM nepodporuje pokročilé spracovanie, ako je spracovanie transakcií, zatiaľ čo typ InnoDB áno.
Tabuľky typu MyISAM kladú dôraz na výkon, ktorý dosahuje niekoľko stupňov rýchlejšie ako typ InnoDB, ale neposkytuje transakčnú podporu, zatiaľ čo InnoDB poskytuje pokročilé databázové funkcie ako transakčná podpora, cudzie kľúče a podobne.

Binárne dátové súbory typu MyISAM je možné migrovať medzi rôznymi operačnými systémami. To znamená, že ho možno priamo skopírovať z Windows systému na linux.

Upravte typ motora tabuľky:

ALTER
TABLE TABLE TABLENAME ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Metóda sekvenčného prístupu
Je to štandardná metóda ukladania záznamov a súborov. V porovnaní s inými úložnými enginmi má MyISAM najviac nástrojov na kontrolu a opravu tabuliek.
Tabuľky MyISAM je možné komprimovať a podporujú vyhľadávanie v plnom texte. Nie sú transakčne bezpečné a nepodporujú cudzie kľúče. Ak sa niečo vráti späť, spôsobí to neúplné vrátenie a nie je atómové. Ak sa vykoná veľké množstvo popráv
TheSELECT, MyISAM je lepšia voľba.

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

Pre typy InnoDB, ktoré niečo podporujú, je hlavným dôvodom ovplyvňujúcim rýchlosť to, že predvolené nastavenie AUTOCOMMIT je zapnuté a program explicitne nevolá BEGIN
Spustiť transakciu, čo vedie k automatickému commitu pri každom vložení, čo výrazne ovplyvňuje rýchlosť. Môžete zavolať start pred spustením SQL a viacero SQL vytvorí jednu vec (aj keď autocommit zasiahne
môžu byť tiež zapnuté), čo výrazne zlepší výkon.

1. Zobraziť informácie v tabuľke, vrátane typu použitého enginu, kódovania znakov, štruktúry tabuliek a podobne

Použi tento príkaz

mysql>
zobraziť vytvoriť tabuľku T1; --t1 je názov tabuľky

2.
Nasledujúci príkaz je možné vykonať na prepnutie netransakčných tabuliek na transakcie (údaje sa nestrácajú), innodb tabuľky sú bezpečnejšie ako myisam tabuľky:
Alter Table T1
type=innodb; --t1 je názov tabuľky

3.
Tabuľku innodb nie je možné table_name príkazom repair table a myisamchk -r
Ale môžeš použiť kontrolný stôl
t1 a mysqlcheck [OPTIONS] databáza [tabuľky]

4.
Do príkazového riadku boli pridané nasledujúce parametre na spustenie databázy mysql, aby všetky novo vydané dátové tabuľky MySQL predvolene používali transakcie (
Ovplyvňuje iba príkaz create. )
--default-table-type=InnoDB

5.
Dočasná zmena predvoleného typu tabuľky je možná:
set table_type=InnoDB;

MyISAM
Výhody: vysoká rýchlosť, menej miesta na disku; Využitie disku v databáze alebo tabuľke je možné zistiť buď kontrolou veľkosti príslušného súboru (priečinka) operačným systémom, alebo použitím SQL príkazu ZOBRAZIŤ STAV TABUĽKY
Nevýhody: Žiadny mechanizmus integrity dát, t. j. žiadna podpora transakcií a cudzích kľúčov

InnoDB
Výhody: Podpora transakcií a cudzích kľúčov a kompletný mechanizmus integrity dát. ZOBRAZIŤ STAV TABUĽKY môžete použiť na kontrolu obsadenosti disku v knižnici alebo tabuľke
Nevýhody: ultra pomalá rýchlosť, obsadený veľký priestor na disku; Všetky knižnice sú uložené v jednom (zvyčajne) alebo viacerých súboroch a operačný systém nedokáže určiť, koľko miesta má knižnica alebo tabuľka

BDB
Výhody: Podpora transakcií, nepodporuje cudzie kľúče, pretože na základe podpory transakcií môžu byť cudzie kľúče implementované nepriamo na strane klienta (čo môže byť serverová strana koncového zákazníka, napríklad PHP), takže integrita dát je stále zaručená;
Nevýhody: pomalá rýchlosť, vysoké využitie disku; Nemôžete sa dotazovať na obsadenosť priestoru v databáze alebo tabuľke cez ZOBRAZIŤ STAV TABUĽKY. Operačný systém dokáže pochopiť veľkosť príslušného priečinka knižnice alebo zodpovedajúceho súboru tabuľky, ale keďže tabuľka BDB musí vždy generovať logovací súbor a skutočná obsadenosť disku by mala obsahovať log, veľkosť knižnice alebo tabuľky je vždy menšia ako skutočný priestor zaberaný operačným systémom.




Predchádzajúci:Atribúty typov polí v tabuľke MySQL sú podrobne vysvetlené
Budúci:Nástroj na prístup k php databáze Medoo
 Prenajímateľ| Zverejnené 16. 7. 2017 11:09:29 |
//更改引擎
meno tabuľky alter table engine = MyISAM;

Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com