ultima modificare 10 iulie 2020
În acest capitol, vom vorbi despre motoarele de stocare MySQL.
Un motor de stocare este un modul software pe care un sistem de management al bazelor de date îl folosește pentru a crea, citi, actualiza datele dintr-o bază de date. Există două tipuri de motoare de stocare în MySQL: tranzacționale și netranzacționale.
Pentru MySQL 5.5 și ulterior, motorul de stocare implicit este InnoDB.Motorul de stocare implicit pentru MySQL înainte de versiunea5.5 era MyISAM. Alegerea motorului de stocare potrivit este o decizie strategică importantă, care va avea impact asupra dezvoltării viitoare. În acest tutorial, vom folosi motoarele de stocare MyISAM, InnoDB, Memory șiCSV. Dacă sunteți nou în MySQL și studiați sistemul de gestionare a bazelor de date MySQL, atunci acest lucru nu reprezintă o preocupare prea mare. Dacă planificați o bază de date de producție, atunci lucrurile devin mai complicate.
Lista motoarelor de stocare
Motoare de stocare suportate de MySQL:
- InnoDB
- MyISAM
- Memory
- CSV
- Merge
- Archive
- Archive
- Federated
- Blackhole
- Example
InnoDB este cel mai utilizat motor de stocare cu suport pentru tranzacții. Este un motor de stocare compatibil ACID. Suportă blocajul la nivel de rând, recuperarea în caz de accident și controlul concurenței în mai multe versiuni. Este singurul motor care asigură constrângerea de integritate referențială a cheilor străine. Oracle recomandă utilizarea InnoDB pentru tabele, cu excepția cazurilor de utilizare specializată.
MyISAM este motorul de stocare original. Este un motor de stocare rapidă.Nu suportă tranzacții. MyISAM oferă table-levellocking. Este utilizat în principal în Web și în depozitarea datelor.
Motor de stocare în memorie creează tabele în memorie. Este cel mai rapid motor. Oferă blocare la nivel de tabel. Nu suportă tranzacții. motorul de stocare în memorie este ideal pentru crearea de tabele temporare sau pentru căutări rapide. datele se pierd atunci când baza de date este repornită.
CSV stochează datele în fișiere CSV. Oferă o mare flexibilitate deoarece datele în acest format sunt ușor de integrat în alte aplicații.
Merge operează pe tabelele MyISAM subiacente. Tabelele de fuziune ajută la gestionarea mai ușoară a volumelor mari de date. Grupează în mod logic o serie de tabele MyISAM identice și face referire la ele ca la un singur obiect. bun pentru mediile de depozitare a datelor.
Motor de stocare a arhivelor este optimizat pentru inserții de mare viteză. Acestacomprimă datele pe măsură ce sunt inserate. Nu suportă tranzacții. Este ideal pentru stocarea și recuperarea unor cantități mari de date istorice, arhivate, rareori referențiate.
Motor de stocare Blackhole acceptă, dar nu stochează date. Recuperările returnează întotdeauna un set gol. Funcționalitatea poate fi utilizată în proiectarea bazelor de date distribuite în care datele sunt replicate automat, dar nu sunt stocate local. Acest motor de stocare poate fi utilizat pentru a efectua teste de performanță sau alte teste.
Motorul de stocare federat oferă posibilitatea de a separa serverele MySQL pentru a crea o bază de date logică din mai multe servere fizice. interogările de pe serverul local sunt executate automat pe tabelele de la distanță (federate). Nu se stochează date în tabelele locale.este bun pentru mediile distribuite.
mysql> SHOW ENGINES\G*************************** 1. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 2. row *************************** Engine: CSV Support: YES Comment: CSV storage engineTransactions: NO XA: NO Savepoints: NO...
Comanda SHOW ENGINES
arată toate motoarele disponibile pe care le suportă serverul.
Alegerea motorului potrivit
Niciun motor de stocare nu este ideal pentru toate circumstanțele. Unele au cele mai bune performanțe în anumite condiții și au performanțe mai slabe în alte situații. Există compromisuri care trebuie luate în considerare. O soluție mai sigură necesită mai multe resurse; este posibil să fie mai lentă, să necesite mai mult timp de procesor și spațiu pe disc. MySQL este foarte flexibil prin faptul că oferă mai multe motoare de stocare diferite. Unele dintre ele, cum ar fi motorul Archive, sunt create pentru a fi utilizate în situații specifice.
În unele cazuri, răspunsul este clar. Ori de câte ori avem de-a face cu unele sisteme de plăți, suntem obligați să folosim cea mai sigură soluție. Nu ne putem permite să pierdem date atât de sensibile. InnoDB este calea de urmat. Dacă dorim o căutare în text complet, atunci putem alege fie MyISAM, fie InnoDB… Numai InnoDB suportă constrângerea de integritate referențială a cheilor străine, iar dacă intenționăm să folosim această constrângere, atunci alegerea este clară.
Specificarea și modificarea motoarelor de stocare
Motorul de stocare este specificat în momentul creării tabelei.
mysql> CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), -> Cost INTEGER) ENGINE='MyISAM';
Cuvântul cheie ENGINE
specifică motorul de stocare utilizatpentru această tabelă anume.
Dacă nu specificăm în mod explicit motorul de stocare, atunci se utilizează motorul de stocare implicit. Înainte de MySQL 5.5, motorul de stocare implicit era MyISAM. Pentru MySQL 5.5 și ulterior, motorul de stocare implicit este InnoDB.
Este posibilă migrarea la un alt motor de stocare. Rețineți că migrarea unui tabel mare poate dura mult timp. De asemenea, este posibil să ne confruntăm cu unele probleme la migrarea tabelelor. Este posibil ca unele caracteristici să nu fie suportate în ambele tabele.
mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars';+--------+| ENGINE |+--------+| InnoDB |+--------+1 row in set (0,05 sec)
Această instrucțiune SQL găsește motorul de stocare utilizat pentru un tabel Cars
în baza de date mydb
. Am putea folosi și instrucțiunea SQL SELECT CREATE TABLE Cars
. information_schema
este un tabel care stochează informații tehnice despre tabelele noastre.
mysql> ALTER TABLE Cars ENGINE='MyISAM';
Această instrucțiune SQL schimbă motorul de stocare al tabelului Cars
în MyISAM.
mysql> SELECT ENGINE FROM information_schema.TABLES -> WHERE TABLE_SCHEMA='mydb' -> AND TABLE_NAME='Cars';+--------+| ENGINE |+--------+| MyISAM |+--------+1 row in set (0,00 sec)
Acum motorul de stocare al tabelului este MyISAM.
În această parte a tutorialului MySQL, am acoperit motoarele de stocare.
.