PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einrichtung und Verwendung von pgmemcache

Das Vorladen oder Zwischenspeichern der Tabelle in PostgreSQL ist eine schwierige Aufgabe, da PostgreSQL keine Speicherverwaltung auf Single-Big-Synchronisationsebene bietet. Alle Erinnerungen sind unabhängig. Caching ist mit Tools von Drittanbietern wie memcached möglich.

pgmemcache ist eine Reihe von benutzerdefinierten PostgreSQL-Funktionen (APIs), die eine Schnittstelle zu Memcache bereitstellen. pgmemcache, prerequisites empfiehlt, libmemcached zu haben, es wird jedoch auch empfohlen, memcached zusammen mit ihm zu installieren. Meine Präsentation besteht aus Installation/Caching/Überwachung mit pgmemcache-APIs. Da ich nicht der Entwickler oder Hacker bin :), ist meine Art der Implementierung eine sehr einfache Methode.

Punkte:

  • Speichert den Wert im Cache auf der Grundlage von Schlüssel/Wert-Mitteln, es wird empfohlen, eine Tabelle mit Primärschlüssel/eindeutigem Schlüssel zu führen.
  • Keine Datenredundanz – Wenn Memcache ausfällt oder der Speicherplatz knapp wird, gehen neue Datensätze und Aktualisierungen verloren.
  • Unterstützt alle Memcache-Befehle (set/get(single/multi)/delete/replace/incr/stats)
  • Nachdem die Daten in Memcache gespeichert wurden und Sie die Tabelle aus dem Backend löschen, gibt Memcached keine Fehler aus. Es ist alles Ihre Verwaltung, wie Sie es pflegen.
  • Keine Möglichkeit, Daten zu durchlaufen oder festzustellen, welche Schlüssel gespeichert wurden.
  • Sie können niemals einen Memcache-Server herunterfahren oder einen neuen zum Pool hinzufügen, während andere spielen oder verbunden sind.
  • Wenn der Aktualisierungsprozess im Hintergrund aus irgendeinem Grund stoppt, finden keine Aktualisierungen statt und es besteht die Möglichkeit, dass der Memcache-Server voll wird.
  • Jedes PostgreSQL-Backend muss sich an den Memcache-Port binden, bevor es auf die Daten zugreifen kann.
  • Memcached läuft auf dem Standardport 11211

Voraussetzungen:

  1. PostgreSQL 8.4. oder höher
  2. libevent
  3. Speicher-Cache
  4. libmemcached
  5. pgmemcache
  6. Monitoring-Tools (Monitoring-Tools, Damemtop usw.)

Installation:
Schritt 1. (libevent)

Libevent API ist wichtig bei der Konfiguration von pgmemcache, ich bevorzuge Bibliotheken als ersten Schritt der Installation. Beginnen wir also mit der Konfiguration der libevent-Bibliothek am Standardspeicherort.

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

Schritt 2 (im Cache gespeichert)

Installieren Sie memcached, indem Sie das libevent.

aktivieren
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

Schritt 3. (libmemcached)

pgmemcache baut auf libmemcached auf. Libmemcached sucht nach dem Speicherort der Memcache-Binärdateien, also legen Sie den Pfad zu den Memcache-Binärdateien fest, bevor Sie fortfahren.

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

Schritt 4 (pgmemcache)

Die pgmemcache-API hilft bei der Interaktion mit Memcached, z. B. beim Caching/Abrufen von Daten.

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

Bei der Installation wird die Datei pgmemcache.sql mit allen APIs erstellt, um mit Memcache unter dem PG-Contrib-Speicherort zu interagieren. Um pgmemcache-APIs zu erstellen, führen Sie einfach die Datei pgmemcache.sql in der gesamten Datenbank aus.

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

Liste der pgmemcache-API:

Hinweis: Beim Ausführen der .sql-Datei kann es zu Fehlern wie „ISTFATAL:Bibliothek „/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so“ konnte nicht geladen werden“ kommen:libmemcached.so.8:Datei mit gemeinsam genutzten Objekten kann nicht geöffnet werden:Keine solche Datei oder Verzeichnis". Das heißt, die PG-Instanz wurde nicht mit der neu erstellten Bibliothek geladen. Lösung, setzen Sie PATH und LD_LIBRARY_PATH und starten Sie die Instanz neu, um die Bibliotheken zu erkennen.

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

Wenn Sie den pgmemcache standardmäßig auf Ihre PG-Instanz laden möchten, bearbeiten Sie die Datei postgresql.conf, ändern Sie die folgenden Parameter und starten Sie den Cluster neu.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Konfiguration:
Schritt 1.

Für das Zwischenspeichern von Daten müssen Sie zuerst den Speicher initialisieren, sobald der Speicher zugewiesen ist, sind später die PG-Backends dafür verantwortlich, die Daten zu binden und in den Cache zu verschieben. Hier habe ich meinen Memcache auf localhost mit 512 MB auf dem Standardport 11211 gestartet. -d bedeutet, den Daemon starten. Alle meine Übungen sind auf localhost.

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

Hinweis:Um Daten aus dem Cache abzurufen, sollte jedes PostgreSQL-Backend zuerst die Daten binden und abrufen.

Schritt 2.

Binden Sie die Instanz an den laufenden Memcache-Port. Überprüfen Sie nach dem Binden die Memcache-Statistiken.

Schritt 3.

Jetzt ist es an der Zeit, Daten in Memcached zwischenzuspeichern. Memcached verwendet Schlüssel/Werte, um Daten in seinem Speicher zu speichern. Stellen Sie also sicher, dass Ihre Tabelle über einen Primärschlüssel/eindeutigen Schlüssel verfügt, damit das Abrufen einfach ist. Wie bereits erwähnt, gibt es sehr gute APIs, mit denen man herumspielen kann, um den Wert beizubehalten und darauf zuzugreifen. In meinem Beispiel verwende ich memcache_set(), um den Wert beizubehalten, und memcache_get(), um Daten abzurufen.

Sobald der Wert im Memcache festgelegt ist, liegt es nun in Ihrer Verantwortung, Ihr Backend an Memcached zu binden, und mit Hilfe der pgmemcache-APIs können Sie auf die Daten zugreifen. Jedes Postgres-Backend muss vor dem Zugriff gebunden werden. Nachfolgend finden Sie das Beispiel.

Daten aus dem Cache abrufen

Überwachung

Wenn Sie sehr gut in Linux sind, können Sie maximale Informationen über Memcached-Speicher abrufen, es gibt jedoch nur wenige Tools, die mit Memcached-Quellpaketen geliefert werden, wie Überwachungstools, Damemtop usw. Ich verwende das Monitoring-Tools-Dienstprogramm zum Überwachen von Memcache.

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

Beispiel:

Eine kleine Anstrengung von meiner Seite, um pgmemcache einzurichten und die Grundlagen zu verstehen. Hoffe es war hilfreich. Posten Sie weiterhin Ihre Kommentare oder Vorschläge, die sehr geschätzt werden.