1/ISAM
ISAM este o abordare bine definită și testată în timp pentru gestionarea tabelelor de date, concepută astfel încât baza de date este interogată mult mai des decât actualizată. Ca urmare, ISAM realizează citiri rapid și nu consumă prea multe resurse de memorie și stocare. Cele două principale dezavantaje ale ISAM sunt că nu suportă procesarea tranzacțiilor și nu este tolerantă la erori: dacă hard disk-ul se blochează, fișierele de date nu pot fi recuperate. Dacă folosești ISAM pentru aplicații critice, trebuie întotdeauna să faci backup la toate datele tale în timp real, iar MySQL poate suporta astfel de aplicații de backup datorită funcției sale de replicare.
2/InnoDB
Oferă funcția de control al tranzacțiilor, care asigură executarea cu succes a unui set de comenzi sau, atunci când apare o eroare de comandă, rezultatul tuturor comenzilor este anulat; se poate imagina că capacitatea de control al tranzacțiilor este foarte importantă în e-banking. Suport pentru COMMIT, ROLLBACK și alte funcții de tranzacții. Cea mai recentă versiune a Mysql plănuiește deja să elimine suportul pentru BDB în favoarea InnoDB.
MyIASM este o versiune nouă a tabelelor IASM cu următoarele extensii: Portabilitate la nivel binar. Indexul coloanei NULL. Există mai puține fragmente pentru rândurile variabile decât pentru tabelele ISAM. Suport pentru fișiere mari. Compresie indicială mai bună. Este mai bine să existe o distribuție statistică? Procesare auto_increment mai bună și mai rapidă.
Iată câteva detalii și diferențe specifice de implementare:
1. InnoDB nu suportă indexuri de tip FULLTEXT. 2. Tabelele nu sunt salvate în InnoDB rânduri specifice, adică execută select count(*) de la InnoDB scanează întregul tabel pentru a calcula câte rânduri există, dar MyISAM doar citește rândurile salvate. Rețineți că atunci când afirmația count(*) conține unde condiție, funcționarea ambelor tabele este aceeași. 3. Pentru câmpurile de AUTO_INCREMENT tip, indicele cu acel câmp trebuie inclus în InnoDB, dar în tabelul MyISAM este posibil să se creeze un index federat cu alte câmpuri. 4.ȘTERGE TABELUL FROM, InnoDB nu recreează tabelul, ci îl șterge rând cu rând. 5. TABELUL DE ÎNCĂRCARE DE LA Operațiunea MASTER nu funcționează pentru InnoDB, soluția este să se schimbe mai întâi tabelul InnoDB în tabelul MyISAM, să se importe datele, apoi să se schimbe în tabelul InnoDB, dar nu este aplicabil tabelelor care folosesc funcții suplimentare InnoDB (cum ar fi chei străine).
În plus, blocarea pe rând a unui tabel InnoDB nu este absolută; dacă MySQL nu poate determina domeniul de scanare la executarea unei instrucțiuni SQL, tabelul InnoDB va bloca și întreaga tabelă, cum ar fi update-ul set de tabele num=1 unde numele este de genul "a%"
Niciun tabel nu este atotputernic, doar alegând tipul de tabel potrivit pentru tipul de business putem maximiza avantajele de performanță ale MySQL.
MySQL Când Administratorul creează o bază de date, tabelul devine implicit la tipul InnoDB.
InnoDB, ISAM-ul meu Care este diferența dintre cele două tipuri: tipul MyISAM nu suportă procesare avansată, cum ar fi procesarea tranzacțiilor, în timp ce tipul InnoDB o face. Tabelele tipului MyISAM pun accent pe performanță, care funcționează cu câteva grade mai rapid decât tipul InnoDB, dar nu oferă suport tranzacțional, în timp ce InnoDB oferă funcționalități avansate ale bazei de date, cum ar fi suport tranzacțional, chei externe etc.
Fișierele binare de date de tip MyISAM pot fi migrate între diferite sisteme de operare. Adică, poate fi copiată direct din sistemul Windows în sistemul Linux.
Modifică tipul motorului tabelului:
ALTER TABLE tablename ENGINE = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed Metoda de acces secvențial Este metoda standard pentru stocarea înregistrărilor și fișierelor. Comparativ cu alte motoare de stocare, MyISAM are majoritatea uneltelor pentru verificarea și repararea tabelelor. Tabelele MyISAM pot fi comprimate și suportă căutare full-text. Acestea nu sunt sigure tranzacțional și nu suportă chei străine. Dacă ceva este retrogradat, va cauza un rollback incomplet și nu este atomic. Dacă se efectuează un număr mare de execuții TheSELECT, MyISAM este alegerea mai bună.
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
Pentru tipurile InnoDB care suportă anumite lucruri, principalul motiv care afectează viteza este că setarea implicită AUTOCOMMIT este activată și programul nu apelează explicit BEGIN Pornește o tranzacție, rezultând un commit automat pentru fiecare inserare, ceea ce afectează serios viteza. Poți să apelezi start înainte ca SQL să fie executat, iar mai multe SQL formează un singur lucru (chiar dacă se activează autocommit-ul poate fi de asemenea activat), ceea ce va îmbunătăți semnificativ performanța.
1. Vizualizarea informațiilor tabelului, inclusiv tipul motorului folosit, codificarea caracterelor, structura tabelului etc
Folosește această comandă
mysql> Afișează Creare Tabel T1; --t1 este numele tabelului
2. Următoarea comandă poate fi executată pentru a schimba tabelele netranzacționale în tranzacții (datele nu se pierd), tabelele innodb sunt mai sigure decât tabelele myisam: Tabelul Alter T1 type=innodb; --t1 este numele tabelului
3. Tabelul innodb nu poate fi table_name cu comanda tabelei de reparare și myisamchk -r Dar poți folosi un tabel de verificare t1 și mysqlcheck [OPTIONS] [tabele]
4. Următorii parametri au fost adăugați în linia de comandă pentru a porni baza de date mysql, astfel încât toate tabelele de date mysql nou lansate să folosească implicit tranzacții ( Afectează doar instrucțiunea create. ) --default-table-type=InnoDB
5. Schimbarea temporară a tipului implicit de tabel se poate face prin: set table_type=InnoDB;
MyISAM Avantaje: viteză rapidă, mai puțin spațiu pe disc ocupat; Utilizarea discului într-o bază de date sau tabel poate fi găsită fie verificând dimensiunea fișierului corespunzător (folderul) de către sistemul de operare, fie folosind instrucțiunea SQL SHOW TABLE STATUS Dezavantaje: Fără mecanism de integritate a datelor, adică fără suport pentru tranzacții și chei externe
InnoDB Avantaje: Susține tranzacții și chei străine, precum și mecanism complet de integritate a datelor. Poți folosi AFIȘEAZĂ STATUSUL TABELULUI pentru a verifica ocuparea discului într-o bibliotecă sau un tabel Dezavantaje: viteză ultra-lentă, spațiu mare pe disc ocupat; Toate bibliotecile sunt stocate într-unul (de obicei) sau în mai multe fișiere, iar sistemul de operare nu poate determina cât spațiu are o bibliotecă sau un tabel
BDB Avantaje: Suportă tranzacțiile, nu suportă chei străine, deoarece, pe baza suportului tranzacțiilor, cheile externe pot fi implementate indirect pe partea clientului bazei de date (care poate fi partea serverului clientului final, cum ar fi PHP), astfel încât integritatea datelor este încă garantată; Dezavantaje: viteză lentă, utilizare mare a discului; Nu poți interoga ocuparea spațiului într-o bază de date sau tabel prin SHOW TABLE STATUS. Sistemul de operare poate înțelege dimensiunea folderului corespunzător al bibliotecii sau a fișierului corespunzător al tabelului, dar deoarece tabelul BDB trebuie întotdeauna să genereze un fișier de jurnal, iar ocuparea efectivă a discului ar trebui să includă fișierul de jurnal, dimensiunea unei biblioteci sau a unui tabel este întotdeauna mai mică decât spațiul efectiv ocupat de sistemul de operare.
|