Domanda

Come posso mettere l'intero database PostgreSql nella RAM per un accesso più veloce ?? Ho 8 GB di memoria e voglio dedicare 2 GB per il DB. Ho letto delle impostazioni dei buffer condivisi, ma memorizza solo nella cache il frammento più accessibile del database. Avevo bisogno di una soluzione in cui l'intero DB fosse inserito nella RAM e qualsiasi lettura avvenisse dal RAM RAM e qualsiasi operazione di scrittura avrebbe prima scritto nel DB RAM e poi nel DB sul disco rigido. (Qualcosa come il predefinito fsync = con buffer condivisi nelle impostazioni di configurazione di postgresql).

È stato utile?

Soluzione

Mi sono posto la stessa domanda per un po '. Uno degli svantaggi di PostgreSQL è che non sembra supportare un motore di archiviazione IN MEMORY come MySQL fa ...

Comunque mi sono imbattuto in un articolo un paio di settimane fa descrivendo come ciò potrebbe essere fatto; anche se sembra funzionare solo su Linux. Non posso davvero garantirlo perché non l'ho provato da solo, ma sembra avere senso dato che a un tablespace PostgreSQL è effettivamente assegnato un repository montato.

Tuttavia, anche con questo approccio, non sono sicuro che potresti mettere anche i tuoi indici nella RAM; Non penso che MySQL costringa l'uso dell'indice HASH con la sua tabella IN MEMORY per niente ...

Volevo anche fare una cosa simile per migliorare le prestazioni perché sto lavorando anche con enormi set di dati. Sto usando Python; hanno tipi di dati del dizionario che sono sostanzialmente tabelle hash sotto forma di coppie {chiave: valore}. L'uso di questi è molto efficiente ed efficace. Fondamentalmente, per portare la mia tabella PostgreSQL nella RAM, la carico in un dizionario python, ci lavoro e la persisto in db una volta ogni tanto; ne vale la pena se viene usato bene.

Se non stai usando Python, sono abbastanza sicuro che sia una struttura di dati di mappatura del dizionario simile nella tua lingua.

Spero che questo aiuti!

Altri suggerimenti

se stai estraendo dati per ID, usa memcached - http://www.danga.com/memcached / + postgresql.

Forse qualcosa come una Tangosol Coherence cache se stai usando Java .

Con solo un database da 8 GB, se hai già ottimizzato tutte le attività SQL e sei pronto a risolvere i problemi di query con l'hardware, ti suggerisco di avere dei problemi. Questa non è solo una soluzione scalabile a lungo termine. Sei sicuro che non puoi fare nulla per fare differenze sostanziali dal punto di vista della progettazione di software e database?

Imposta un vecchio disco RAM e dì a pg di archiviare i suoi dati lì.

Assicurati di eseguirne il backup bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top