Mysql
 sql >> Database >  >> RDS >> Mysql

InnoDB o MyISAM - Perché non entrambi?

Puoi avere entrambe le tabelle MyISAM e InnoDB nello stesso database. Quello che troverai però, quando hai tabelle molto grandi, MyISAM causerebbe problemi di blocco delle tabelle. Ciò che alla fine fa è bloccare l'intera tabella per una singola transazione, il che è molto negativo se hai molti utenti che utilizzano il tuo sito web. Ad esempio, se un utente sta cercando qualcosa sul tuo sito e la query richiede pochi minuti per essere completata, nessun altro utente potrebbe utilizzare il tuo sito durante quel periodo perché l'intera tabella è bloccata.

InnoDB d'altra parte utilizza il blocco a livello di riga, il che significa che quella riga è l'unica riga bloccata dalla tabella durante una transazione. InnoDB può essere più lento nelle ricerche perché non offre la ricerca full-text come MyISAM, ma non è un grosso problema quando lo si confronta con il blocco a livello di tabella di MyISAM. Se utilizzi InnoDB, come molti siti di grandi dimensioni, puoi utilizzare un motore di ricerca lato server come Sphinx per ricerche a tutto testo. Oppure potresti anche usare una tabella MyISAM per fare la ricerca come f00 suggerito. Personalmente ho consigliato InnoDB principalmente per la funzione di blocco a livello di riga, ma anche perché puoi implementare la ricerca full-text in molti altri modi.

Fondamentalmente, se hai un'applicazione message board con molte selezioni, inserti e aggiornamenti, InnoDB è probabilmente la scelta generalmente appropriata. Ma se non stai costruendo qualcosa del genere (o qualsiasi altra cosa con utenti registrati) e stai lavorando principalmente con contenuto statico (o più letture che scritture), quindi potresti usare MyISAM.