sql >> Database >  >> RDS >> PostgreSQL

pgmemcache instellen en gebruiken

Het vooraf laden of cachen van de tabel in PostgreSQL is een zware taak, omdat PostgreSQL geen enkel groot geheugenbeheer op synchronisatieniveau biedt. Alle herinneringen zijn onafhankelijk. Caching is mogelijk met tools van derden zoals memcached.

pgmemcache is een set door PostgreSQL door de gebruiker gedefinieerde functies (API's) die een interface bieden voor memcached. pgmemcache, pre-requisites raadt aan om libmemcached te hebben, maar het wordt ook aanbevolen om memcached mee te installeren. Mijn presentatie bestaat uit installatie/caching/monitoring met behulp van pgmemcache API's. Ik ben niet de ontwikkelaar of hacker :), dus mijn manier van implementeren is op een heel eenvoudige manier.

Punten:

  • Slaat waarde op in cache op basis van sleutel/waarde-gemiddelden, het wordt aanbevolen om de tabel met primaire sleutel/unieke sleutel bij te houden.
  • Geen gegevensredundantie - Als memcached uitvalt of onvoldoende ruimte heeft, gaan nieuwe records en updates verloren.
  • Ondersteunt alle memcached-commando's (set/get(single/multi)/delete/replace/incr/stats)
  • Nadat de gegevens in memcached zijn bewaard en als je de tabel uit de backend haalt, zal memcached geen fouten opleveren. Het is allemaal jouw beheer hoe je het onderhoudt.
  • Geen mogelijkheid om gegevens te herhalen of te bepalen welke sleutels zijn opgeslagen.
  • Je kunt een memcached-server nooit offline halen of een nieuwe toevoegen aan de pool terwijl mensen aan het spelen of verbonden zijn.
  • Als het updateproces op de achtergrond om welke reden dan ook stopt, vinden er geen updates plaats en bestaat de kans dat de geheugencacheserver vol raakt.
  • Elke PostgreSQL-backend moet binden aan de memcached-poort voordat de gegevens worden geopend.
  • Memcached draait op standaardpoort 11211

Vereisten:

  1. PostgreSQL 8.4. of hoger
  2. libevent
  3. in het geheugen opgeslagen
  4. libmemcached
  5. pgmemcache
  6. Monitoring-tools (monitoring-tools,damemtop,etc.)

Installatie:
Stap 1. (libevent)

Libevent API is belangrijk bij het configureren van pgmemcache, ik heb liever bibliotheken als eerste stap van installatie. Dus laten we beginnen met het configureren van de libevent-bibliotheek op de standaardlocatie.

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

Stap 2 (in het geheugen opgeslagen)

Installeer memcached door de libevent in te schakelen.

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

Stap 3. (libmemcached)

pgmemcache is gebouwd bovenop libmemcached. Libmemcached zoekt naar binaire geheugencache-locatie, dus stel het pad in op binaire geheugencache voordat u verder gaat.

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

Stap 4 (pgmemcache)

pgmemcache API helpt bij de interactie met memcached zoals het cachen/ophalen van gegevens.

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

Installatie zal een pgmemcache.sql-bestand maken met alle API's om te communiceren met memcache onder de locatie van de PG-bijdrage. Om pgmemcache API's te maken, voert u het bestand pgmemcache.sql uit in de hele database.

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

Pgmemcache API's lijst:

Opmerking: Tijdens het uitvoeren van het .sql-bestand kunt u een fout tegenkomen zoals "ISTFATAL:kan bibliotheek niet laden"/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so":libmemcached.so.8:kan gedeeld objectbestand niet openen:geen dergelijk bestand of adresboek". Betekent dat de PG-instantie niet is geladen met de nieuw gemaakte bibliotheek. Oplossing, stel de PATH en LD_LIBRARY_PATH in en start de instantie opnieuw om de bibliotheken te herkennen.

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

Als u de pgmemcache standaard in uw PG-instantie wilt laden, bewerkt u het bestand postgresql.conf en wijzigt u de volgende parameters en start u het cluster opnieuw.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Configuratie:
Stap 1.

Voor het cachen van gegevens moet u eerst het geheugen initialiseren. Zodra het geheugen is toegewezen, krijgt later de PG-backend de verantwoordelijkheid om de gegevens te binden en in de cache te duwen. Hier heb ik mijn memcache op localhost gestart met 512 MB op standaardpoort 11211. -d betekent start de daemon. Al mijn oefeningen staan ​​op localhost.

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

Opmerking:om gegevens uit de cache op te halen, moet elke PostgreSQL-backend eerst binden en de gegevens ophalen.

Stap 2.

Bind de instantie aan de actieve geheugencache-poort. Na binding, check uit voor de memcached-statistieken.

Stap 3.

Nu is het tijd om gegevens in memcached te cachen, Memcached gebruikt sleutels/waarde om gegevens in het geheugen te bewaren, dus zorg ervoor dat uw tabel een primaire/unieke sleutel heeft, zodat het ophalen gemakkelijk zal zijn. Zoals vermeld, zijn er zeer goede API's om te spelen met het behouden van de waarde en het openen ervan, in mijn voorbeeld gebruik ik memcache_set() om de waarde te behouden en memcache_get() om gegevens op te halen.

Zodra de waarde is ingesteld in de memcached, is het nu jouw verantwoordelijkheid om je backend aan memcached te binden en met behulp van pgmemcache API's heb je toegang tot de gegevens. Elke Postgres-backend moet binden voordat deze kan worden geopend. Hieronder vindt u het voorbeeld.

Gegevens ophalen uit cache

Bewaking

Als je erg goed bent in linux, kun je maximale informatie uit memcached-geheugen halen, maar er zijn maar weinig tools die bij het memcached-bronpakket worden geleverd, zoals monitoringtools,damemtop enz. Gebruik het hulpprogramma voor monitoring-tools voor het bewaken van de geheugencache.

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

Voorbeeld:

Een kleine inspanning van mijn kant om pgmemcache in te stellen en de basis te begrijpen. Hoop dat het nuttig was. Blijf uw opmerkingen of suggesties posten die zeer op prijs worden gesteld.


  1. Hoe praat Access met ODBC-gegevensbronnen? Deel 3

  2. Veldregels toepassen met classificatie

  3. Standalone MySQL-server

  4. Weet u wanneer u opnieuw moet proberen of mislukken bij het aanroepen van SQL Server vanuit C#?