Domanda

Sto eseguendo un server mysql. Vorrei in qualche modo assicurarmi che l'intero DB sia caricato nel ram come ho sentito che sarebbe molto più veloce.

È vero? e come posso verificarlo?

È stato utile?

Soluzione

Se si utilizza InnoDB, è possibile impostare innodb_buffer_pool_size in modo che sia almeno grande quanto i dati e gli indici. Quindi, quando accedi ai dati, questi verranno memorizzati nella cache e tutti gli accessi successivi avverranno tramite la memoria.

Se si desidera pre-memorizzare nella cache i dati, è possibile eseguire alcune delle query più comuni o scansioni complete di tabella / indice per forzare il caricamento di tutti i dati in memoria.

Esiste un'opzione init-file per mysqld che può fare in modo che il server esegua automaticamente alcuni comandi all'avvio, in cui è possibile includere le query di pre-cache da eseguire.

Tieni presente che non vuoi esaurire la memoria, quindi fai attenzione a impostare innodb_buffer_pool_size troppo grande.

Altri suggerimenti

Bene, un'opzione è usare un ramdrive .. sebbene non sia permanente.

http: //www.linuxforums .org / forum / misc / 670-how-creare-ram-drive-linux.html

(Solo per completezza). Puoi utilizzare HEAP come motore da tavolo. Tuttavia, tieni presente che qualsiasi dato inserito in una tabella HEAP scompare al riavvio del server.

Le tabelle nella RAM sono molto veloci.

È possibile modificare le tabelle esistenti modificando il loro motore di archiviazione. Ma esegui un backup se desideri utilizzare i dati dopo il riavvio del server.

ALTER TABLE test ENGINE = MEMORY;

Tieni presente che le tabelle MEMORY non possono contenere colonne BLOB o TEXT e che le dimensioni dei dati e dell'indice sono limitate alla memoria disponibile.

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