Delphi 7 utilizzando la RAM per il database

0

Ho un'app di database esistente scritta in D7 con database di apollo.

Il client mi ha fornito un desktop veloce con 24 gb di ram

Posso caricare in qualche modo i file del database nella ram per velocizzare l'elaborazione?

Con milioni di record alcune procedure richiedono 1/2 ora o più, principalmente a causa della lettura / scrittura del disco

    
posta user127566 21.04.2014 - 12:32
fonte

2 risposte

4

Probabilmente il modo più semplice è usare un "Disco RAM". Ci sono vari software in giro.

link

Naturalmente, caricare grandi quantità di dati nella RAM richiederà un po 'di tempo. Adattare il computer con un SSD potrebbe dare un incremento di prestazioni senza dover caricare i dati nella RAM.

-Edit

Per inciso, non si dice molto su quale elaborazione si sta facendo sui dati che può avere un effetto importante. Se, ad esempio, stai leggendo ogni record eseguendo un calcolo e scrivendo i dati, allora caricare i dati nella RAM potrebbe rallentare le cose mentre carichi nella ram, caricare il record dalla ram, registrare il processo, salvare nella ram, salvare su disco invece di caricare semplicemente un record nella RAM, registrare il processo, salvarlo sul disco.

    
risposta data 21.04.2014 - 13:50
fonte
1

Peccato che Delphi 7 sia in grado di produrre solo binari a 32 bit. Ciò lascia una buona parte dei 24 GB inutilizzati.

Opzioni :

  • Disco RAM (come proposto da Jadee).
  • Sistema di memorizzazione nella cache dedicato, come Memcached o, più raccomandabile, Redis
  • avere più di un'istanza del tuo programma in esecuzione e " shard " i dati tra di loro
  • AWE potrebbe essere un'opzione su un 64 bit OS

Commenti :

  • Sia il disco RAM che le cache esterne possono essere facilmente utilizzati da altri processi. Anche se non influisce sulla soluzione del problema, questo potrebbe essere un vantaggio importante.
  • Per Memcached e Redis e altri sistemi, sono disponibili adattatori Delphi funzionanti per il protocollo Memcached e STOMP come OSS. Personalmente preferirei Redis, in quanto è disponibile come pacchetto preconfigurato per Windows. Costruire Memcached su Windows è un vero PITA, Redis è attivo e funzionante in pochi minuti.
  • AWE richiede un privilegio non standard e la memoria fisica allocata (!) è riservata al processo di chiamata. Quindi, considererei questa opzione finalmente.
  • L'utilizzo dello sharding su più istanze richiede una chiara logica di partizionamento. Se non puoi farlo, hai bisogno di un coordinatore che abbia un impatto sulle prestazioni, quindi in tal caso sarebbe meglio usare invece l'approccio del sistema di caching.
risposta data 21.04.2014 - 15:09
fonte

Leggi altre domande sui tag