PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Configurazione e utilizzo di pgmemcache

Precaricare o memorizzare nella cache la tabella in PostgreSQL è un compito difficile, perché PostgreSQL non offre una singola grande gestione della memoria a livello di sincronizzazione. Tutti i ricordi sono indipendenti. La memorizzazione nella cache è possibile con strumenti di terze parti come memcached.

pgmemcache è un insieme di funzioni (API) PostgreSQL definite dall'utente che forniscono un'interfaccia per memcached. pgmemcache, prerequisiti consiglia di avere libmemcache, tuttavia è anche consigliabile installare memcached insieme ad esso. La mia presentazione consiste in installazione/caching/monitoraggio utilizzando le API di pgmemcache. Come non lo sviluppatore o l'hacker :), quindi il mio modo di implementazione è in un metodo molto semplice.

Punti:

  • Memorizza il valore nella cache sulla base dei mezzi di chiave/valore, si consiglia di mantenere la tabella con la chiave primaria/chiave univoca.
  • Nessuna ridondanza dei dati:se memcached si interrompe o esaurisce lo spazio, i nuovi record e gli aggiornamenti andranno persi.
  • Supporta tutti i comandi memorizzati nella cache (set/get(single/multi)/delete/replace/incr/stats)
  • Dopo aver conservato i dati in memcached e se elimini la tabella dal back-end, memcached non genererà alcun errore. È tutta la tua gestione come lo mantieni.
  • Nessuna possibilità di scorrere i dati o determinare quali chiavi sono state archiviate.
  • Non puoi mai disattivare un server memorizzato nella cache o aggiungerne uno nuovo al pool mentre le persone stanno giocando o sono connesse.
  • Se il processo di aggiornamento in background si interrompe per qualsiasi motivo, gli aggiornamenti non si verificano ed è possibile che il server memorizzato nella cache possa riempirsi.
  • Ogni back-end PostgreSQL deve collegarsi alla porta memcached prima di accedere ai dati.
  • Memcached viene eseguito sulla porta predefinita 11211

Prerequisiti:

  1. PostgreSQL 8.4. o superiore
  2. evento per diffamazione
  3. memcached
  4. libmemcached
  5. pgmemcache
  6. Strumenti di monitoraggio (strumenti di monitoraggio, damemtop, ecc.)

Installazione:
Fase 1. (evento diffamatorio)

L'API Libevent è importante durante la configurazione di pgmemcache, preferisco avere le librerie come primo passaggio dell'installazione. Quindi iniziamo con la configurazione della libreria libevent nella posizione predefinita.

Download link for libevent:
http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
tar -xvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable
./configure
make
make install

Passaggio 2 (memcached)

Installa memcached abilitando il libevent.

Download link for memcached:
http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz
cd /usr/local/src/memcached-1.4.6
------on 32-bit
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib
------on 64-bit
export LD_LIBRARY_PATH=/usr/lib64:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
./configure --prefix=/opt/PostgreSQL/9.0/bin/ --with-libevent=/usr/lib64
make
make install

Passaggio 3. (libmemcached)

pgmemcache è costruito su libmemcache. Libmemcached cerca la posizione binaria memcache, quindi imposta il percorso sui binari memcached prima di procedere.

export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
Download link:
http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
cd libmemcached-0.50
./configure
make
make install

Passaggio 4 (pgmemcache)

L'API pgmemcache ti aiuterà, interagendo con memcached come la memorizzazione nella cache/recupero dei dati.

Download link:
http://pgfoundry.org/frs/download.php/3018/pgmemcache_2.0.6.tar.bz2
cd pgmemcache
PATH=/opt/PostgreSQL/9.0/bin:$PATH make USE_PGXS=1 install
or
make
make install

L'installazione creerà il file pgmemcache.sql con tutte le API per interagire con memcache nella posizione contrib PG. Per creare le API pgmemcache, basta eseguire il file pgmemcache.sql in tutto il database.

psql -p PGPORT -d PGDATABASE -f /opt/PostgreSQL/9.0/share/postgresql/contrib/pgmemcache.sql

Elenco API pgmemcache:

Nota: Durante l'esecuzione del file .sql è possibile che si verifichino errori come "ISTFATAL:impossibile caricare la libreria"/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so":libmemcached.so.8:impossibile aprire il file oggetto condiviso:nessun file di questo tipo o directory”. Significa che l'istanza PG non è stata caricata con la libreria appena creata. Risoluzione, imposta PATH e LD_LIBRARY_PATH e riavvia l'istanza per riconoscere le librerie.

Eg:-
export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
$pg_ctl -D $PGDATA restart

Se desideri caricare pgmemcache come predefinito nella tua istanza PG, modifica il file postgresql.conf e cambia i parametri seguenti e riavvia il cluster.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Configurazione:
Passaggio 1.

Per la memorizzazione nella cache dei dati, è necessario prima inizializzare la memoria, una volta allocata la memoria, in seguito PG back-end si assume la responsabilità di associare e inviare i dati nella cache. Qui, ho avviato il mio memcache su localhost con 512 MB sulla porta predefinita 11211. -d significa avviare il demone. Tutti i miei esercizi sono su localhost.

$./memcached -d -m 512 -u postgres -l localhost -p 11211

Nota:per recuperare i dati dalla cache, ogni backend PostgreSQL deve prima associare e recuperare i dati.

Passaggio 2.

Associa l'istanza alla porta memcache in esecuzione. Dopo l'associazione, controlla le statistiche memorizzate nella cache.

Passaggio 3.

Ora, è il momento di memorizzare nella cache i dati in memcached, Memcached utilizza chiavi/valore per risiedere i dati nella sua memoria, quindi assicurati che la tua tabella abbia una chiave primaria/unica, quindi il recupero sarà facile. Come accennato, ci sono ottime API per giocare a mantenere il valore e accedervi, nel mio esempio, uso memcache_set() per mantenere il valore e memcache_get() per recuperare i dati.

Una volta impostato il valore in memcached, ora è tua responsabilità associare il tuo backend a memcached e con l'aiuto delle API di pgmemcache puoi accedere ai dati. Ogni backend di Postgres deve eseguire il binding prima di accedere. Si prega di trovare l'esempio qui sotto.

Ottenere dati dalla cache

Monitoraggio

Se sei molto bravo in Linux puoi estrarre il massimo delle informazioni sulla memoria memcached, tuttavia ci sono pochi strumenti che vengono forniti con il pacchetto sorgente memcached come monitoring-tools, damemtop ecc.,. Sto usando l'utilità degli strumenti di monitoraggio per monitorare memcache.

usage:-
memcached-tool localhost display
memcached-tool localhost dump
memcached-tool localhost stats | grep bytes

Esempio:

Un piccolo sforzo da parte mia per configurare pgmemcache e comprenderne le basi. Spero sia stato utile. Continua a pubblicare i tuoi commenti o suggerimenti che sono molto apprezzati.