Capitolul 16 Motoare de stocare alternative

Motoarele de stocare sunt componente MySQL care gestionează operațiile SQL pentru diferite tipuri de tabele. InnoDB este motorul de stocare implicit și cel mai generalist, iar Oracle recomandă utilizarea acestuia pentru tabele, cu excepția cazurilor de utilizare specializată. (Instrucțiunea CREATE TABLE din MySQL 8.0 creează în mod implicit tabele InnoDB.)

Serverul MySQL utilizează o arhitectură de motoare de stocare conectabilă care permite motoarelor de stocare să fie încărcate și descărcate de pe un server MySQL în funcțiune.

Pentru a determina ce motoare de stocare suportă serverul dumneavoastră, utilizați instrucțiunea SHOW ENGINES. Valoarea din coloana Support indică dacă un motor poate fi utilizat. O valoare de YES, NO sau DEFAULT indică faptul că un motor este disponibil, nu este disponibil sau este disponibil și este setat în prezent ca motor de stocare implicit.

mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NO XA: NO Savepoints: NO*************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NO XA: NO Savepoints: NO*************************** 5. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engineTransactions: NO XA: NO Savepoints: NO...

Acest capitol acoperă cazurile de utilizare a motoarelor de stocare MySQL cu scop special. El nu acoperă motorul de stocare implicit InnoDB sau motorul de stocare NDB, care sunt tratate în Capitolul 15, Motorul de stocare InnoDB și Capitolul 23, MySQL NDB Cluster 8.0. Pentru utilizatorii avansați, conține, de asemenea, o descriere a arhitecturii motorului de stocare conectabil (a se vedea secțiunea 16.11, „Prezentare generală a arhitecturii motorului de stocare MySQL”).

Pentru informații despre caracteristicile oferite în binarele comerciale ale MySQL Server, consultați MySQL Editions, pe site-ul web MySQL. Motoarele de stocare disponibile ar putea depinde de ediția de MySQL pe care o utilizați.

Pentru răspunsuri la întrebări frecvente despre motoarele de stocare MySQL, consultați secțiunea A.2, „Întrebări frecvente despre MySQL 8.0″: Motoare de stocare”.

Motoare de stocare suportate de MySQL 8.0

  • InnoDB: Motorul de stocare implicit în MySQL 8.0. InnoDB este un motor de stocare sigur pentru tranzacții (compatibil ACID) pentru MySQL care dispune de capabilități de commit, rollback și crash-recovery pentru a proteja datele utilizatorilor. Blocarea la nivel de rând InnoDB (fără escaladarea la blocaje cu granularitate mai mare) și citirile consistente fără blocaj de tip Oracle sporesc concurența și performanța multiutilizator. InnoDB stochează datele utilizatorului în indexuri grupate pentru a reduce I/O pentru interogări comune bazate pe chei primare. Pentru a menține integritatea datelor, InnoDB suportă, de asemenea, constrângerile de integritate referențială FOREIGN KEY. Pentru mai multe informații despre InnoDB, consultați Capitolul 15, The InnoDB Storage Engine (Motorul de stocare InnoDB).

  • MyISAM: Aceste tabele au o amprentă mică. Blocarea la nivel de tabel limitează performanța în sarcinile de lucru de citire/scriere, astfel încât este adesea utilizată în sarcinile de lucru de numai citire sau de citire în cea mai mare parte în configurațiile Web și de stocare de date.

  • Memory: Stochează toate datele în RAM, pentru acces rapid în mediile care necesită consultări rapide ale datelor necritice. Acest motor a fost cunoscut anterior sub numele de motor HEAP. Cazurile sale de utilizare sunt din ce în ce mai puține; InnoDB, cu zona sa de memorie de tip buffer pool, oferă o modalitate generală și durabilă de a păstra majoritatea sau toate datele în memorie, iar NDBCLUSTER oferă căutări rapide de valori-cheie pentru seturi uriașe de date distribuite.

  • CSV: Tabelele sale sunt de fapt fișiere text cu valori separate prin virgulă. Tabelele CSV vă permit să importați sau să descărcați date în format CSV, pentru a face schimb de date cu scripturi și aplicații care citesc și scriu în același format. Deoarece tabelele CSV nu sunt indexate, de obicei păstrați datele în tabelele InnoDB în timpul funcționării normale și utilizați tabelele CSV numai în etapa de import sau export.

  • Archive: Aceste tabele compacte, neindexate, sunt destinate stocării și recuperării unor cantități mari de informații istorice, arhivate sau de audit de securitate la care se face rareori referire.

  • Blackhole: Motorul de stocare Blackhole acceptă, dar nu stochează date, similar cu dispozitivul Unix /dev/null. Interogările returnează întotdeauna un set gol. Aceste tabele pot fi utilizate în configurații de replicare în care instrucțiunile DML sunt trimise către serverele de replică, dar serverul sursă nu păstrează propria copie a datelor.

  • NDB (cunoscută și sub numele de NDBCLUSTER): Acest motor de baze de date grupate este deosebit de potrivit pentru aplicațiile care necesită cel mai înalt grad posibil de timp de funcționare și disponibilitate.

  • Merge: Permite unui DBA sau dezvoltator MySQL să grupeze în mod logic o serie de tabele MyISAM identice și să facă referire la ele ca la un singur obiect. Bun pentru mediile VLDB, cum ar fi depozitarea de date.

  • Federated: Oferă posibilitatea de a lega servere MySQL separate pentru a crea o bază de date logică din mai multe servere fizice. Foarte bun pentru mediile distribuite sau pentru mediile de data mart.

  • Example: Acest motor servește ca exemplu în codul sursă MySQL care ilustrează cum se poate începe scrierea unor noi motoare de stocare. Este în primul rând de interes pentru dezvoltatori. Motorul de stocare este un „stub” care nu face nimic. Puteți crea tabele cu acest motor, dar nu se pot stoca date în ele și nici nu pot fi recuperate din ele.

Nu sunteți restricționat să folosiți același motor de stocare pentru un întreg server sau schemă. Puteți specifica motorul de stocare pentru orice tabel. De exemplu, o aplicație ar putea utiliza în principal tabele InnoDB, cu o tabelă CSV pentru exportul de date către o foaie de calcul și câteva tabele MEMORY pentru spații de lucru temporare.

Alegerea unui motor de stocare

Diferitele motoare de stocare furnizate cu MySQL sunt proiectate având în vedere diferite cazuri de utilizare. Tabelul următor oferă o prezentare generală a câtorva motoare de stocare furnizate cu MySQL, cu note clarificatoare în urma tabelului.

Tabelul 16.1 Rezumat al caracteristicilor motoarelor de stocare

.

.

.

.

.

.

.

.

.

.

.

Caracteristică MyISAM Memorie InnoDB Archive NDB
B-.tree indexes Yes Yes Yes No No No
Backup/point-in- Da
Indexuri clusterizate Nu Nu Da Nu Da Nu Nu
Date comprimate Da (nota 2) Nu Da Da Da Nu
Cachete de date Nu Nu Nu Da Da Nu Da
Date criptate Da (nota 3) Da (nota 3) Da (nota 3) Da (nota 4) Da (nota 3) Da (nota 3)
Suport pentru chei străine Nu Nu Da Nu Da (nota 5)
Full…text search indexes Da Nu Da (nota 6) Nu Nu Nu
Geospațiale suport pentru tipuri de date Da Nu Da Da Da Da
Indexare geospațială suport Da Nu Da (nota 7) Nu Nu
Indexări hash Nu Da Nu (nota 8) Nu Da
Index caches Da Nu Nu Da Nu Nu Da
Granularitatea de blocare Tablă Tablă Tablă Rând Tablă Tablă Row Row
MVCC No No No Yes Yes No No
Suport pentru replicare (nota 1) Da Limitat (nota 9) Da Da Da Da Da Da Da
Limite de stocare 256TB RAM 64TB Nimic 384EB
T-tree indexes Nu Nu Nu Nu Da
Transactions Nu Nu Nu Da Nu Nu Nu Da
Actualizează statisticile pentru dicționarul de date Da Da Da Da Da Da Da Da Da

Notează:

Da Da

:

1. Implementat în server, mai degrabă decât în motorul de stocare.

2. Tabelele MyISAM comprimate sunt acceptate numai atunci când se utilizează formatul de rânduri comprimate. Tabelele care utilizează formatul de rânduri comprimate cu MyISAM sunt numai pentru citire.

3. Implementat în server prin intermediul funcțiilor de criptare.

4. Implementat în server prin intermediul funcțiilor de criptare; în MySQL 5.7 și versiunile ulterioare, este acceptată criptarea datelor în repaus.

5. Suportul pentru chei străine este disponibil în MySQL Cluster NDB 7.3 și versiunile ulterioare.

6. Suportul pentru indici FULLTEXT este disponibil în MySQL 5.6 și versiunile ulterioare.

7. Suportul pentru indexarea geospațială este disponibil în MySQL 5.7 și versiunile ulterioare.

8. InnoDB utilizează în mod intern indici hash pentru caracteristica sa Adaptive Hash Index.

9. A se vedea discuția de mai târziu în această secțiune.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.