Bene, secondo la tua domanda, InnoDB dovrebbe fare il lavoro perché:
- La sua scalabilità è molto migliore di MyISAM
- È il blocco delle righe, quindi se hai più scritture che selezioni, si adatta meglio.
- Infine, dal momento che hai detto che saranno accessibili raramente, non è necessario MyISAM poiché è meglio su query selezionate.
Controlla qui per ulteriori informazioni
MODIFICA
Bene, nel commento chiedi di altri motori. Ecco un elenco completo di motori. Tra questi, come hai detto, l'archivio ha uno svantaggio, gli altri non si adattano alla tua richiesta. Ecco una citazione dal sito Web MySQL:
InnoDB has been designed for maximum performance when processing large data volumes.
Its CPU efficiency is probably not matched by any other disk-based relational database
engine.
Quindi in pratica:
- Se hai intenzione di usare MEMORY non farlo come hai detto che non accederai molto ai dati e la tua tabella crescerà troppo. Avrai bisogno di molta RAM per questo e quando riavvierai tutti i dati andranno persi.
- Se hai intenzione di utilizzare MyISAM, non farlo in quanto è progettato per le tabelle in cui le query di selezione sono più frequenti dell'inserimento e dell'aggiornamento.
- Per quanto riguarda l'archivio, è una tua scelta. Qui è un confronto tra MyISAM e l'archivio per una tabella di registro. Rimarrei comunque su InnoDB.
- Non menzionerò nemmeno Merge, Blackhole, Example e altri motori. (Non ho molte conoscenze sul motore CSV ma per quanto ho letto, non è un motore appropriato per questo tipo di tabella.
Ad essere onesto, passavo molto tempo prima di fare una mossa importante nella programmazione. Ho cercato per ore, forse per giorni, su un problema per vedere quale fosse il modo più appropriato. Ti dirò una cosa, la ricerca fa bene, ma dopo un punto se ti impedisce di lavorare allora dovresti fermarti, bere un caffè e fare subito la tua scelta. Pertanto, prova solo quello più adatto a te e come sperimenterai troverai un modo ancora migliore, provando te stesso. Voglio dire, non credo che Facebook sia stato progettato per un volume del genere, ma man mano che cresceva, hanno continuato a cambiare la struttura di conseguenza. Questo è quello che credo, però, potrebbe non essere la realtà :) Comunque, spero che le informazioni ti aiutino.
MODIFICA 2013
Di seguito troverai brevi descrizioni per i motori di archiviazione MySQL integrati.
Il mioISAM
Queste tabelle includono ottimizzazioni aggiuntive, come cache avanzata e meccanismi di indicizzazione, che forniscono un rapido accesso ai dati. Utilizzando il blocco a livello di tabella, il motore di archiviazione MyISAM fornisce operazioni simultanee. Quando le prestazioni di lettura sono un problema, in genere, MyISAM è la scelta.
Memoria
Dette anche tabelle heap, le tabelle di memoria sono ideali per il recupero rapido dei dati utilizzati di frequente che vengono modificati raramente (come codici paese, codici postali o altre tabelle di ricerca). Come suggerisce il nome, i dati sono archiviati in memoria e quindi l'accesso è molto più veloce dei dati archiviati nei dischi. Una restrizione significativa per l'utilizzo della memoria è che i dati sono validi durante la sessione MySQL. Quando si arresta in modo anomalo o si spegne, i dati vengono persi.
InnoDB
Un caso in cui dovrai utilizzare questo motore di archiviazione è quando devi utilizzare chiavi o transazioni esterne. InnoDB è più simultaneo di MyISAM poiché fornisce il blocco a livello di riga. Il motore di archiviazione è altamente affidabile. Un altro caso in cui vorrai utilizzare questo spazio di archiviazione è quando hai più scritture che letture. Quando scrivi frequentemente dati nella tabella, prova a utilizzare questo spazio di archiviazione è più simultaneo di MyISAM.
Archivia
È progettato per archiviare grandi quantità di dati in un formato compresso. Uno dei casi d'uso di questo motore di archiviazione consiste nell'archiviazione di dati storici o di archiviazione o registri di sicurezza. La tabella non utilizza indici, quindi per il recupero e l'archiviazione quotidiana dei dati non è una buona scelta. È il blocco a livello di riga e i dati non vengono compressi al volo quando richiesto. Inoltre, non è possibile modificare la tabella.
Unisci
Unisci viene utilizzato per "unire" tabelle partizionate che risiedono sulla stessa macchina. Quando dividi una tabella grande in più tabelle più piccole e accedi ad esse contemporaneamente utilizzando una tabella di unione, il vantaggio più grande è la sua velocità. Le ricerche e gli ordinamenti verranno eseguiti più rapidamente poiché nelle tabelle sono presenti meno dati.