2012-03-07 18 views
14

Come è possibile salvare/caricare il database completo in memoria h2 incorporato in qualche file o directory in modalità binaria per un caricamento più veloce.Salvataggio del database H2 in memoria sul disco

Voglio usarlo per il caching dei dati, quindi non devo eseguire tutte le righe di creare tabelle/inserire clausole ogni volta.

+1

È sufficiente utilizzare il file DB rispetto alla versione in memoria? Presumo che tu stia facendo uno sviluppo personalizzato utilizzando un framework (ad esempio Grails) che non hai menzionato. – Marc

+0

Questo è un progetto personalizzato senza strutture coinvolte. Per essere onesti non sono sicuro di quali siano le implicazioni di performance del file db, voglio la velocità e i dati si adatteranno sempre alla memoria, quindi ho pensato che il db in-memory sia il più veloce. I dati verranno interrogati solo per cui non voglio alcun controllo di salvataggio non necessario. – mikkom

+0

@marc L'utilizzo di "DB file" è diverso. Sarebbe super utile nel test delle unità se fosse possibile impostare un set di dati di test in memoria, con java o qualsiasi altra lingua, quindi eseguire un backup del set di dati e utilizzarlo per ripristinare lo stato iniziale dopo ogni test. –

risposta

8

Invece di utilizzare un database in memoria, è possibile utilizzare un database regolare (persistente). È ancora possibile utilizzare le tabelle in memoria anche in quel momento (creare una tabella di memoria).

Il modo più semplice per mantenere un database completamente in memoria su disco consiste nell'utilizzare l'istruzione SQL SCRIPT TO 'fileName'. Questo creerà uno script SQL. I dati sono memorizzati in forma di testo, che non sembra la soluzione più efficiente. Tuttavia di solito il collo di bottiglia è il disco e non la formattazione/analisi del testo.

Un'altra opzione è creare un altro database, collegare le tabelle con il database in memoria (utilizzando create linked table o la funzione link_schema) e quindi utilizzare create table as select per mantenere le tabelle.

+0

Inserire le clausole è ciò che faccio attualmente e per 1 gig di testo ci vuole un po 'di tempo e non è io. scusa ma voglio l'opzione binaria. – mikkom

+0

Aggiornato la mia risposta. Per SCRIPT: se non è IO, cos'è allora? Hai usato uno strumento di profilazione, come il profiler incorporato? –

Problemi correlati