Differenza tra tabelle MyISAM e InnoDB, qual'è più veloce?

Quali sono le principali differenze tra il tipo di tabella MyISAM ed InnoDB in un database MySql o MariaDB? Qual'è più veloce? E perché dovrei scegliere una piuttosto che l'altra, quali sono i vantaggi di una rispetto all'altra tabella?

In Corso 4
MySql 24-08-2024 2 Risposte 44 Visite +1

Risposte ( 2 approvate )

  1. AskDB Staff
    +2
    24-08-2024 11:02:50
    Rispondi

    Nella progettazione di un database relazionale è importante conoscere e scegliere anche la tipologia di tabella che andrà a contenere e gestire i nostri dati.

     

    Se parliano di MySql e MariaDB i tipi di tabelle più usate sono MyISAM ed InnoDB, la prima è la tipologia di tabella di default quando si crea una nuova tabella.

     

    Sorge allora spontanea la domanda "quali sono le principali differenze tra tabelle MyISAM ed InnoDB?"

     

    Scegliere una piuttosto che l'altra, determina come le tabelle gestiranno i records al loro interno e le relazioni tra le tabelle stesse, nonché aspetti anche legati alla sicurezza e performance. Riassumendo elenchiamo le principali differenze tra MyISAM vs InnoDB:

     

    • MyIsam supporta il blocco a livello di tabella (Table-level Locking), mentre InnoDB a livello di riga (Row-level Locking)
    • MyIsam è pensata per operare con velocità sui dati, mentre InnoDB è progettata per performance e stabilità soprattutto in presenza di grosse mole di dati
    • MyIsam non supporta le chiavi esterne (foreign Keys), mentre in InnoDB impone l'utilizzo delle chiavi esterne. Pertanto possiamo affermare che MySql con tabelle MyISAM è un DBMS mentre se utilizza tabelle InnoDB parliamo di un database relazionale, ovvero un RDBMS (Relational Database Management System)
    • MyISAM memorizza i records, indici e quant'altro in 3 file differenti: nometabella.FRM, nometabella.MYD, nometabella.MYI ; mentre innodb memorizza tutti i dati in un singolo file col nome della tabella
    • MyIsam non supporta le transazioni mentre InnoDB si, questo significa che un comando in MyIsam viene eseguito e basta, mentre in InnoDB si può fare COMMIT e ROLLBACK
    • MyISAM supporta la ricerca full-text e gli index-text, mentre per InnoDB è prevista solo dalla versione 5.5 e 5.6 in poi.

     

    Infine rispondiamo anche alla domanda:

    Qual'è più veloce una tabella MyISAM o InnoDB?

    Le tabelle MyISAM sono in genere più veloci delle InnoDB.

  2. Giorgio Borelli
    0
    24-08-2024 11:36:57
    Rispondi

    E' vero che le tabelle MyIsam in generale sono più veloci di quelle InnoDB, ma la scelta di una tipologia di tabella piuttosto che di un'altra, deve essere determinata dal tipo di applicativo da andare a realizzare, il quale comporterà conseguentemente la mole di dati, la loro gestione ed interrogazione sul database; e sulla base di questo che si deve scegliere l'una piuttosto che l'altra per buttare le fondamenta di una buona progettazione del database.

     

    Nel caso di un applicativo bancario ad es., sarebbe difficile immaginare di progettarne il database senza le transazioni COMMIT o ROLLBACK, piuttosto che avere blocchi a livello di tabella senza che vi si possa accedere se prima non termina l'istruzione e la tabella venga rilasciata.

     

    Sia MyIsam che InnoDb offrono vantaggi e svantaggi, e ripeto la scelta è di tipo progettuale. In genere possiamo affermare che le tabelle MyIsam sono di tipo 'statico' (ecco perché più veloci), e risultano la scelta ideale e decisamente più performanti per db di piccole dimensioni dove vengono eseguite per lo più query interrogative come la SELECT e poche DML (INSERT ed UPDATE) sui dati. Mentre la scelta di tabelle di tipo InnoDB è quasi obbligatoria quando dobbiamo gestire una grande mole di dati (big data) con interrogazioni ed update SQL molto frequenti, in questo caso la InnoDB nasce proprio per soddisfare questi tipi di performance, e risulta anche più stabile ed affidabile con minore probabilità che la tabella si corrompa rispetto ad un'analoga Myisam.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

AskDB Staff

AskDB Staff

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva