Tipurile și structura tabelelor în mysql

Baza de date MySQL suportă mai multe tipuri diferite de mese, toate având propriile caracteristici și limitări.

Voi începe descrierea din tipul de bază MySQL "nativ" al tabelelor MyISAM. Dacă nu specificați un tip de tabel în instrucțiunea de creare a tabelului, acest tip va fi atribuit.
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.

Creați un tabel MyISAM cu un tip explicit:

Utilizarea cuvântului cheie ENGINE este preferabilă, dar este posibilă numai cu MySQL versiunea 4.0.18.

În MySQL, există un tip de tabel MERGE. aceasta vă permite să fuzionați mai multe tabele MyISAM într-una. Acest tip este utilizat în principal pentru a elimina limita de volum pentru tabelele MyISAM. în cazul în care sistemul de operare sau sistemul de fișiere nu vă permite să creați fișiere cu o dimensiune mai specifică (de exemplu 4gb pentru FAT32 etc.). Tabelele MyISAM sunt combinate într-un singur tabel MERGE. trebuie să aibă o structură identică, adică aceleași coloane, indicii și ordinea succesiunii lor.
Pentru tabelul creat de tip MERGE, vor apărea fișierele structurii de tabelă cu extensia .rfm și fișierele cu extensia .MRG. Fișierele .MRG conțin o listă de fișiere index care ar trebui tratate ca un singur fișier.
Puteți utiliza comenzile SELECT, DELETE și UPDATE din tabelul combinat. Dacă încercați să ștergeți tabelul MERGE utilizând comanda DROP TABLE, tabela MERGE va fi distrusă, tabelele MyISAM originale nu vor fi afectate.

Exemplu de creare a unui tabel MERGE:

Rezultatul eșantionului din tabela summ_table arată astfel:

În summ_table comun, câmpul id nu mai este unic!
(Tabelele MERGE nu pot conține chei unice.)

Exemplul arată că utilizând tabela cu setul de parametri UNION pentru asociere, și cu ajutorul setului de parametri parametru INSERT_METHOD pot adăuga înregistrări la masă MyISAM (ca și în acest caz valoarea este trecut una din cele trei constante).

PRIMA - Când introduceți o intrare nouă în tabelul MERGE. Intrarea este plasată în primul tabel din listă în parametrul UNION.
LAST - Înregistrarea este plasată în ultimul tabel din listă.
NU - Această valoare este în esență identică cu absența unui parametru și înseamnă că inserarea în tabelul MERGE nu este posibilă și folosirea instrucțiunii INSERT va duce la o eroare.

Următorul tip de tabele MEMORY (HEAP) este stocat în memoria RAM, ceea ce face foarte rapid toate interogările la astfel de tabele. 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ță.
HEAP este sinonim cu MEMORY. Cu toate acestea, este preferabil să folosiți memoria - care este mai târziu.
Când creați o tabelă de tip MEMORY. Se creează un fișier cu extensia frm, care definește structura tabelului. 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:
1. Indicii sunt utilizați numai în operațiuni de comparare cu operatorii "=" și "<=>", cu alți operatori, cum ar fi"> "sau"<", индексирование столбцов не имеет смысла.
2. Ca și în tabelele MERGE, este posibil să se utilizeze numai indici non-unici.
3. Coloanele tipurilor TEXT și BLOB nu sunt permise.
4. Înainte de MySQL 4.1, acest tabel nu suportă AUTO_INCREMENT.

Un exemplu de crearea de tabele de tip MEMORY:

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.
Exemplul de tip a fost introdus pentru comoditate și demonstrează cum să creați propriile tabele. În opinia mea personală - cel mai discutabil tip de utilitate. )
Exemplu de creare a unei tabele și de încercare de a modifica datele:

Tabelele BDB sunt deservite de procesorul de tranzacții BerkeleyDB, dezvoltat de Sleepycat. Când creați tabele de acest tip, se creează două fișiere. Unul cu extensia frm și stochează structura tabelului, iar cealaltă cu extensia db stochează datele și indexurile.

Exemplu de creare a unui tabel BDB:

Tipul de masă InnoDB a fost dezvoltat de Innobase Oy. 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:
1. Toate tabelele sunt stocate într-un singur spațiu de tabel, deci numele tabelelor trebuie să fie unice.
2. Stocarea datelor într-un singur spațiu de tabel vă permite să eliminați limita numărului 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.
3. Tabelele sprijină recuperarea automată a dezastrelor.
4. Tranzacțiile sunt suportate.
5. Acest tip de tabel în MySQL este singurul care suportă ștergerea în cascadă și cheile externe.
6. Blocarea la nivelul înregistrărilor individuale.
7. Există un suport extins pentru codificări.

Un exemplu de creare a unei tabele InnoDB:


"Tipuri exotice de tabele" - la aceste tipuri mă refer la cele pe care eu nu le-am folosit niciodată și nu au fost suficient studiate - dar totuși ele există și merită să le menționăm.

NDB Cluster
Tipul de tabele Cluster NDB este destinat organizării clusterelor MySQL, în cazul în care tabelele sunt distribuite între mai multe computere conectate la o rețea.

ARHIVA
Tipul ARHIVA este conceput pentru a stoca cantități mari de date într-un format comprimat. La crearea acestor tabele, se creează un fișier care coincide cu numele tabelului și cu extensia frm, în care este stocată structura tabelului. În plus, sunt create două fișiere cu extensii ARZ și ARM, în care sunt stocate datele și metadatele. În plus, la optimizarea tabelului, poate apărea un fișier cu extensia ARN.
Tabelele ARCHIVE acceptă numai două instrucțiuni SQL: INSERT și SELECT. Instrucțiunea SELECT se realizează utilizând metoda de scanare completă a tabelului.

FEDERAȚIA
Tip FEDERATED vă permite să stocați date pe tabele la distanță care sunt pe alte mașini din rețea. La crearea unei tabele, se creează numai fișierul structură cu extensia frm, deoarece datele sunt stocate pe o mașină la distanță.
Pentru a crea o tabelă FEDERATED, trebuie mai întâi să creați tabelul de pe mașina de la distanță, apoi pe mașina de producție cu indicația către mașina de la distanță.

Exemplu de creare a unui tabel FEDERATED:

Probabil că totul.

Articole similare