Η mysql έχει αρκετές storage engines όπως είναι η MyISAM, InnoDB κ.α οποίες βρίσκονται στο storage engine API του mysql server, αυτές είναι υπεύθυνες για την αποθήκευση και ανάκτηση δεδομένων μέσα στο mysql server. O database administrator ή κάποιος που ασχολείτε με devops θα πρέπει να ξέρει τις διαφορές

MyISAM

Η default storage που χρησιμοποιείται είναι η MyISAM η οποία έχει αρκετά πλεονεκτήματα όπως full text indexing, το οποίο είναι πολύ χρήσιμο για ερωτήματα που κάνουν search στη βάση με natural language. Άλλα πλεονέκτημα είναι η αυτόματη ή χειροκίνητη επιδιόρθωση πινάκων που χρησιμοποιούν αυτή τη storage engineκαθώς έχει γρηγορότερα reads. Μερικά μειονεκτήματα είναι ότι δεν υποστηρίζει Transactions και row-level locking αλλα table-level locking , ακεραιότητα δεδομένων και τα χαρακτηριστικά ACID - (Atomicity, Consistency, Isolation, Durability) καθώς και ξένα κλειδιά (Foreign Keys).

InnoDB

Η άλλη κύρια storage engine της mysql είναι η InnoDB και έχει γίνει default πλεον, η οποία είναι σχεδιασμένη ώστε να υποστηρίζει transactions. Τα transactions διασφαλίζουν την εκτέλεση queries τα οποία είναι συνεχόμενα και το ένα εξαρτάται από το άλλο. Ένα άλλο χρήσιμο χαρακτηριστικό της InnoDB είναι το row-level locking με το οποίο αποφεύγονται προβλήματα που δημιουργούνται όταν δύο queries τύπου insert ή update εκτελούνται την ίδια χρονική στιγμή.

Η επιπλέον η ακεραιοτητα δεδομένων και τα Χαρακτηριστικά ACID υποστηρίζονται. Επιπλέον storage engines που υποστηρίζονται είναι

  • Ndbcluster
  • CSV
  • Blackhole
  • Memory
  • Merge
  • Example
  • Archive
  • Federated

Επιπλέον εκτός από τη MySQL ως ένα RDBMS, ένα αξιοσημείωτο fork της mysql είναι η MariaDB, η οποία υποστήριζει ίδιες storage engine και έχει εμπλουτίσει το σύστημα της με περισσότερες. Μερικές διαφορές είναι ότι MariaDB μπορεί να υποστήριξει μεγαλύτερo connection pool +200.000 και γρηγορότερο database replicaton.