MyISAM

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

MyISAM a fost motorul de stocare implicit în MySQL de la introducerea sa (versiunea 3.23) până la versiunea 5.5. Licența este versiunea GNU GPL 2. MyISAM folosește structura ISAM și derivă dintr-un tip mai vechi, acum neutilizat, care a fost numit ISAM. Este un motor de stocare a datelor extrem de rapid și necesită puține resurse, atât în ​​ceea ce privește memoria RAM, cât și în ceea ce privește spațiul pe disc. Principala sa limitare în comparație cu alte SE, cum ar fi InnoDB , este că nu acceptă tranzacții .

Autorul MyISAM și vechiul ISAM este Michael Widenius , creatorul MySQL. Când a părăsit MySQL și, înainte de a fonda MariaDB , a început să se dedice dezvoltării Aria , o evoluție tranzacțională a MyISAM. În MySQL și furculițele sale, motorul de stocare implicit este acum InnoDB și nu mai este MyISAM. Nu mai este distribuit cu Drizzle (dar ar trebui să îl puteți folosi).

Structura fișierului

Fiecare tabel de tip MyISAM este înregistrat în trei fișiere diferite. Fiecare are un nume format din două părți: numele de bază este același cu numele tabelului, în timp ce extensia indică funcția fișierului. De exemplu, un tabel „tabelul_meu” va consta din trei fișiere numite:

  • my_table.frm
  • my_table.myi
  • my_table.myd

Fișierul .frm reprezintă structura tabelului: dimensiunea și tipul fiecărei coloane, indexuri etc. Fișierul .MYI (MYIndex) conține indexurile. Fișierul .MYD (MYDATA) conține datele reale.

Spațiu solicitat de indici

Indicii unui tabel MyISAM pot fi comprimați; pentru a face acest lucru, setați proprietatea PACKED_KEYS = 1. Acest lucru ajută mai ales atunci când aveți mai mulți indici întregi care au același prefix.

Indicii șirului sunt întotdeauna comprimați. Comprimarea acestora ajută în special dacă există multe șiruri cu același prefix.

Indicii MyISAM sunt în mod normal de tipul B-Tree . Pentru a calcula spațiul maxim cerut de indexurile B-Tree necomprimate, se poate utiliza următoarea formulă:

 (dimensiunea datelor + 4) / 0,67

Formate de date

MyISAM poate înregistra date în trei formate diferite:

  • fix;
  • dinamic;
  • comprimat.

Primele două sunt alese automat de MySQL în funcție de tipurile de coloane utilizate. Pentru a crea un tabel comprimat, în schimb, trebuie să utilizați programul myisampack .

Fix

Acesta este formatul implicit. Se folosește dacă nu există coloane cu lungime variabilă (tipuri VARCHAR, BLOB sau TEXT). În acest caz, fiecare înregistrare este înregistrată utilizând un număr fix de octeți.

Acesta este cel mai simplu format și este și cel mai rapid și mai sigur. Defragmentarea unui tabel cu format fix este necesară numai dacă doriți să recuperați spațiul pe disc după ștergerea unui număr foarte mare de înregistrări.

Dinamic

Acest format este utilizat dacă există coloane cu lungime variabilă în tabel sau dacă tabelul este creat cu opțiunea ROW_FORMAT = DYNAMIC.

Acest format este mai complex decât Fixed. Acest lucru se datorează faptului că fiecare înregistrare poate avea o dimensiune diferită; o înregistrare ar putea fi chiar împărțită fizic în mai multe părți dacă dimensiunea acesteia crește în urma unui ACTUALIZARE. Pentru a atenua această problemă, puteți defragmenta tabelul cu comanda OPTIMIZE TABLE.

Fiecare înregistrare este delimitată de o secvență de biți corespunzătoare unui șir gol. Valorile de 4 octeți sau mai mici nu variază niciodată ca dimensiune.

Avantajul formatului dinamic este că ocupă mult mai puțin spațiu decât un tabel cu format fix. Pentru a calcula aproximativ spațiul cerut de o singură înregistrare dinamică, se poate utiliza următoarea formulă:

 3
+ (număr de coloane + 7) / 8
+ (numărul de coloane CHAR)
+ (dimensiunea comprimată a coloanelor numerice)
+ (lungimea corzilor)
+ (numărul de coloane NULL + 7) / 8

Apoi este necesar să adăugați 6 octeți pentru fiecare conexiune. O legătură este creată atunci când un UPDATE crește dimensiunea unei înregistrări, care, prin urmare, trebuie să se împartă în mai multe locații de pe disc. Fiecare locație nouă măsoară cel puțin 20 de octeți, deci ar putea conține extinderea mai multor înregistrări.

Comprimat

O masă comprimată poate fi creată numai cu utilitarul myisampack . Tabelul poate fi decomprimat apoi numai cu utilitarul myisamchk . Ambele programe sunt livrate cu toate edițiile MySQL.

Tabelele comprimate sunt doar în citire. Datele ocupă foarte puțin spațiu. Acest lucru ajută la discuri foarte lente, cum ar fi CD-ROM-urile. Poate conține atât date cu lungime fixă, cât și cu lungime variabilă.

Cum se creează un tabel de tip MyISAM

Sintaxa pentru crearea unui tabel MyISAM este următoarea:

 Test CREATE TABLE (pk1 INT, .....) MOTOR = MyISAM;
Test CREATE TABLE (pk1 INT, .....) TIP = MyISAM;

Pentru a converti un tabel existent în MyISAM:

 ALTER TABLE test MOTOR = MyISAM;
ALTER TABLE test TIP = MyISAM;

Se recomandă utilizarea cuvântului MOTOR deoarece TIP (folosit în versiunile mai vechi ale MySQL) nu mai este utilizat.

MyISAM este unul dintre motoarele mereu prezente (împreună cu MEMORY și Merge ) și este tipul de tabel implicit atunci când este instalat MySQL. Fiind implicit, puteți evita utilizarea clauzei ENGINE. Cu toate acestea, deoarece tipul implicit se poate modifica, pentru a fi sigur că puteți face:

 AFIȘAȚI MOTOARE

MyISAM în furculițele MySQL

Drizzle nu include MyISAM.

MariaDB a implementat segmentarea cache-ului indexului [1] . Scopul acestei caracteristici este de a reduce numărul de mutexe , adică blocări pe cache-ul index care forțează firele să aștepte. Versiunea originală a patch-ului este de Fredrik Nylander de la Stardoll.com. Mai târziu, programul Monty a optimizat codul. De asemenea, a fost adăugat un tabel, în baza de date information_schema, care conține informații despre segmentele cache.

Percona Cluster nu acceptă tabelele MyISAM.

Notă

  1. ^ Segmentare cache index , la kb.askmonty.org . Adus la 12 noiembrie 2012 (arhivat din original la 8 mai 2012) .

Elemente conexe

linkuri externe

  • MyISAM în documentația MySQL
Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă cu software-ul liber