Tabelele MyISAM
Folosit implicit în MySQL până la lansarea versiunii 5.5.
Fiecare tabel MyISAM este stocat pe disc în trei fișiere (în subdirectorul directorului mysql / data), numele acestor fișiere sunt identice cu numele tabelului, iar extensia poate lua una dintre următoarele valori:
.frm - structura tabelului, acest fișier conține informații despre denumirile și tipurile de coloane și indexuri;
.MYD - acest fișier conține date de tabel;
.MYI - acest fișier conține indici de tabel.
Tabelele MyISAM au o serie de caracteristici:
Numărul maxim de indici este de 64 (din versiunea 4.1.2). Fiecare index poate fi de maxim 16 coloane.
Cu versiunea MySQL 4.1, fiecare codificare poate fi specificată pentru fiecare coloană de text.
Este posibilă indexarea coloanelor de text, inclusiv a lungimii variabile.
Căutarea textului este acceptată.
Tabelele au un steag special care indică faptul că masa este închisă corect. Dacă serverul a fost oprit anormal, atunci când se încarcă steaguri neacoperite, semnalează posibile tabele deteriorate, iar serverul va încerca să le verifice și să le restaureze automat.
Tabelele MyISAM pot fi verificate / restaurate folosind utilitarul myisamchk.
Tabelele MyISAM pot fi comprimate utilizând comanda myisampack.
Trei tipuri diferite de tabele sunt acceptate în MyISAM. Două dintre acestea sunt selectate automat, în funcție de tipul coloanelor utilizate. A treia - tabele comprimate - pot fi create numai cu ajutorul instrumentului myisampack.
1. mese statice (cu lungime fixă)
Acesta este formatul implicit. Se utilizează atunci când tabelul nu conține coloanele VARCHAR, BLOB sau TEXT. Acest format este cel mai simplu și mai sigur și, de asemenea, cel mai rapid când lucrați cu discuri. Viteza se realizează datorită simplității de a găsi informații pe disc: în tabelele cu format static cu un index pentru acest lucru este suficient doar să multiplicăm numărul liniei după lungimea sa. În plus, atunci când scanați o masă, este foarte ușor să citiți un număr constant de înregistrări de fiecare dată când citiți de pe un disc. Dacă apare o eroare de dimensiune fixă în timp ce scrieți la un fișier MyISAM, myisamchk poate determina cu ușurință unde se pornește și se termină orice șir. Prin urmare, este posibilă recuperarea tuturor înregistrărilor, cu excepția celor care au fost parțial suprascrise.
2. Tabele dinamice
Formatul este utilizat pentru tabele care conțin coloanele VARCHAR, BLOB sau TEXT și, de asemenea, dacă tabela a fost creată cu ROW_FORMAT = parametrul dinamic. Acesta este un format puțin mai complex, deoarece fiecare linie are un antet care specifică lungimea sa. O înregistrare se poate încheia în mai multe locuri, dacă a fost mărită în timpul actualizării. Pentru a defragmenta tabelul, puteți utiliza tabelele OPTIMIZE sau comenzile myisamchk. Dacă aveți date statice citite / editate adesea în unele coloane VARCHAR sau BLOB ale aceleiași tabele, este mai bine să mutați aceste coloane dinamice în alte tabele pentru a evita fragmentarea.
3. Tabele comprimate
Acest tip de tabel este numai pentru citire. Ele sunt generate folosind instrumentul suplimentar myisampack. În ciuda faptului că formatul tabelelor MyISAM este foarte fiabil (toate modificările din tabel sunt înregistrate înainte de revenirea valorii instrucțiunii SQL), tabela poate fi însă deteriorată. Acest lucru se întâmplă în următoarele cazuri:
Procesul mysqld este distrus în timpul executării înregistrării;
Deconectarea neașteptată a computerului (de exemplu, dacă alimentarea cu energie electrică este oprită);
Eroare hardware;
Utilizarea unui program extern (de exemplu, myisamchk) pe o masă deschisă.
O eroare de software în codul MySQL sau MyISAM.
Tabelele InnoDB
Cu MySQL 5.5 este tipul implicit. Tipul mesei InnoDB a fost dezvoltat de Innobase. Tabelele de acest tip oferă o stocare de date de înaltă performanță și stabilă în tabele cu o capacitate de până la 1 TB și o încărcare a serverului de până la 800 de inserări / actualizări pe secundă. Caracteristici tip InnoDB:
Toate tabelele sunt stocate într-un singur spațiu tabel, deci numele tabelelor trebuie să fie unice.
Stocarea datelor într-un singur spațiu de tabel vă permite să eliminați restricția privind cantitatea de tabele. Un fișier cu tabele poate fi împărțit în mai multe părți și distribuit pe mai multe discuri sau chiar gazde.
Tabelele sprijină recuperarea automată a dezastrelor.
Acest tip de tabele din MySQL este singurul care suportă ștergerea în cascadă și cheile externe.
Blocarea se face la nivelul înregistrărilor individuale.
Există un suport extins pentru codificări.
Tabele MERGE
În MySQL există un tip de tabelă MERGE (sau tabelul MRG_MyISAM), care este o colecție de tabele MyISAM identice care pot fi utilizate ca o singură masă. Numai comenzile SELECT, DELETE și UPDATE pot fi aplicate unui set de tabele. Dacă încercați să aplicați comanda DROP în tabelul MERGE, aceasta va afecta numai definiția MERGE.
Tabele MEMORY
Următorul tip de tabelă MEMORY (HEAP) este stocată în memoria RAM. din cauza faptului că toate cererile la astfel de mese se desfășoară foarte repede. Dezavantajul acestor tabele este unul - pierderea completă a datelor în cazul unei defecțiuni a serverului. În acest sens, aceste tabele stochează în mare parte date temporare care pot fi readuse cu ușurință. Când creați o tabelă de tip MEMORY, este creat un fișier cu extensia frm. în care se determină structura mesei. Când serverul este oprit sau repornit, structura tabelului rămâne, însă toate informațiile din acest tabel se pierd, deoarece sunt stocate numai în memoria RAM. La fiecare repornire a serverului, nu este necesar să re-creați tabelul, structura acestuia rămânând. Tabelele de tip MEMORY au un număr de limitări:
Indicii sunt utilizați numai în operațiuni de comparare cu operatorii "=" și "⇔", cu alți operatori, cum ar fi ">" sau "<», индексирование столбцов не имеет смысла.
Ca și în tabelele MERGE, este posibil să se utilizeze numai indici non-unici.
Coloanele tipurilor TEXT și BLOB nu sunt permise.
Înainte de MySQL 4.1, tabelele de acest tip nu acceptă AUTO_INCREMENT.
Exemplu Tabele
Tastați EXEMPLUL este un stub. Puteți crea un tabel de acest tip, dar nu puteți obține sau transfera date. La crearea tabelelor de acest tip, ca și în tabelele MEMORY, este creat un singur fișier frm, care definește structura tabelului.
Tabele BDB (BerkeleyDB)
Tabelele BDB sunt deservite de procesorul de tranzacții BerkeleyDB, dezvoltat de Sleepycat. Când se creează tabele de acest tip, se generează două fișiere: .frm - structura tabelului este stocată. .db - datele și indexurile sunt stocate.
Caracteristicile tabelelor BDB:
Se păstrează un jurnal pentru tabele. ceea ce sporește stabilitatea bazei de date și crește probabilitatea de recuperare reușită în caz de eșec.
Tabelele tip BDB sunt stocate ca arbori binari. Această metodă de stocare încetinește scanarea mesei (permisă pentru selectarea tuturor rândurilor tabelului) și mărește spațiul ocupat de masa de pe disc. Cu toate acestea, căutarea valorilor individuale în tabel devine mai rapidă. Toate celelalte tabele își păstrează indicii sub formă de arbori binari.
Toate tabelele BDB trebuie să aibă o cheie primară, în absența unei chei primare ascunse cu atributul AUTO_INCREMENT.
Pentru acest tip de tabel, tranzacțiile sunt acceptate la nivel de pagină.
Calculul numărului de rânduri din tabel utilizând funcția COUNT () este mai lent, deoarece numărarea rândurilor pentru tabelele BDB (spre deosebire de MyISAM) din partea serverului nu este acceptată și are loc conversia completă la fiecare aderare.
Cheile nu sunt ambalate, ca în tabelele MyISAM și ocupă mai mult spațiu.
În cazul în care tabela BDB ocupă tot spațiul liber pe disc, tranzacția revine și afișează un mesaj de eroare. Spre deosebire de BDB, tabelele MyISAM vor aștepta să apară spațiul liber, ceea ce va face ca serverul să se blocheze.