MariaDB è nato come fork di MySQL ed è rimasto compatibile per anni. Da allora si sono divisi abbastanza da rendere il passaggio dall'uno all'altro una migrazione e non una sostituzione - ma per una normale applicazione PHP entrambi eseguono lo stesso schema e le stesse query.
Dove la differenza pesa davvero
- JSON. MySQL ha un vero tipo JSON con indicizzazione. MariaDB conserva il JSON come testo con un vincolo di controllo: portabile, e più lento per tutto ciò che interroga dentro il documento.
- La replica. MySQL usa i GTID, MariaDB ha un suo schema. Non sono intercambiabili, quindi una replica non può essere dell'altro.
- Funzioni finestra e CTE. Ora ce le hanno entrambi; le installazioni vecchie, dell'uno come dell'altro, forse no.
- I motori di archiviazione. MariaDB porta con sé extra come Aria e ColumnStore. Non servono quasi a nessuno.
Come capire quale ha
mysql -V
mysql -e "SELECT VERSION()"
# 10.x or 11.x is MariaDB; 8.x is MySQL
Passare dall'uno all'altro
Dump e importazione, mai una copia di file. Le directory dei dati non sono compatibili, e un datadir copiato produce un database che si avvia e poi si comporta in modo strano: assai peggio di uno che si rifiuta di partire.
mysqldump --single-transaction --routines --triggers --default-character-set=utf8mb4 db > db.sql
# then import into the other engine and CHECK the row counts per table
Quale scegliere per un sito nuovo
Quello che porta la sua distribuzione e che il suo host supporta. La differenza di prestazioni per una tipica applicazione PHP sta dentro il rumore; contano assai di più il buffer pool, gli indici e le query: veda innodb_buffer_pool_size e quando aggiungere un indice.
Se la sua applicazione ne documenta uno in particolare, usi quello. I problemi di compatibilità sono rari e sono una pena quando capitano.
