sql >> Databasteknik >  >> RDS >> PostgreSQL

pgmemcache Installation och användning

Att förladda eller cachelagra tabellen i PostgreSQL är en tuff uppgift, eftersom PostgreSQL inte erbjuder en enda stor minneshantering på synkroniseringsnivå. Alla minnen är oberoende. Cachning är möjligt med tredjepartsverktyg som memcached.

pgmemcache är en uppsättning PostgreSQL användardefinierade funktioner (API) som tillhandahåller ett gränssnitt för memcached. pgmemcache, pre-requisites rekommenderar att ha libmemcached, men det rekommenderas också att installera memcached tillsammans med det. Min presentation består av installation/cache/övervakning med pgmemcache API:er. Eftersom jag inte är utvecklaren eller hackaren :) så är mitt sätt att implementera på en mycket enkel metod.

Poäng:

  • Lagrar värde i cacheminnet på basis av nyckel-/värdemedel, att behålla tabell med primärnyckel/unik nyckel rekommenderas.
  • Ingen dataredundans – Om memcached går ner eller tar slut på utrymme kommer nya poster och uppdateringar att gå förlorade.
  • Stöder alla memcachade kommandon (set/get(single/multi)/delete/replace/incr/stats)
  • Efter att ha lagrat data i memcached och om du släpper tabellen från backend kommer memcached inte att ge några fel. Det är hela din hantering hur du underhåller den.
  • Ingen möjlighet att iterera över data eller avgöra vilka nycklar som har lagrats.
  • Du kan aldrig ta ner en memcachad server eller lägga till en ny i poolen medan folk spelar eller är anslutna.
  • Om uppdateringsprocessen i bakgrunden av någon anledning avbryts, sker inga uppdateringar och det finns en möjlighet att den memcachade servern kan fyllas upp.
  • Varje PostgreSQL-backend måste binda till en memcachad port innan de kan komma åt data.
  • Memcachad körs på standardport 11211

Förutsättningar:

  1. PostgreSQL 8.4. eller högre
  2. livevent
  3. memcachad
  4. libmemcachad
  5. pgmemcache
  6. Övervakningsverktyg (övervakningsverktyg, damemtop, etc.)

Installation:
Steg 1. (libevent)

Libevent API är viktigt när man konfigurerar pgmemcache, jag föredrar att ha bibliotek som första steg i installationen. Så låt oss börja med att libevent-biblioteket konfigureras på standardplatsen.

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

Steg 2 (memcachad)

Installera memcached genom att aktivera 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

Steg 3. (libmemcached)

pgmemcache är byggd ovanpå libmemcached. Libmemcached letar efter binär plats för memcache, så ställ in sökvägen till memcachade binärer innan du fortsätter.

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

Steg 4 (pgmemcache)

pgmemcache API kommer att hjälpa till att interagera med memcachad som cachning/hämtning av data.

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

Installationen kommer att skapa filen pgmemcache.sql med alla API:er för att interagera med memcache under PG bidragsplats. För att skapa pgmemcache API:er kör du bara filen pgmemcache.sql i hela databasen.

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

pgmemcache API:s lista:

Obs! När du kör .sql-filen kan du få fel som "ISTFATAL:kunde inte ladda biblioteket "/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so":libmemcached.so.8:kan inte öppna fil med delat objekt:Ingen sådan fil eller katalog”. Betyder att PG-instansen inte laddades med nyskapat bibliotek. Upplösning, ställ in PATH och LD_LIBRARY_PATH och starta om instansen för att känna igen biblioteken.

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

Om du vill ladda pgmemcachen som standard till din PG-instans, redigera filen postgresql.conf och ändra följande parametrar och starta om klustret.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Konfiguration:
Steg 1.

För cachelagring av data måste du först initiera minnet, när minnet är tilldelat, senare ansvarar PG för backends för att binda och trycka in data i cachen. Här har jag startat min memcache på localhost med 512MB på standardport 11211. -d betyder starta demonen. All min träning är på localhost.

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

Obs:För att hämta data från cachen bör varje PostgreSQL-backend först binda och hämta data.

Steg 2.

Bind instansen till den löpande memcache-porten. Efter bindning, checka ut för den memcachade statistiken.

Steg 3.

Nu är det dags att cache data i memcached, Memcached använder nycklar/värde för att lagra data i sitt minne, så se till att din tabell har Primär/Unik nyckel så att det blir lätt att hämta. Som nämnts finns det mycket bra API:er att leka med för att behålla värdet och komma åt dem, i mitt exempel använder jag memcache_set() för att behålla värdet och memcache_get() för att hämta data.

När värdet väl är inställt i memcached är det nu ditt ansvar att binda din backend till memcached och med hjälp av pgmemcache API:er kan du komma åt data. Varje Postgres-backend måste bindas innan den kan komma åt. Se exemplet nedan.

Hämta data från cachen

Övervakning

Om du är mycket bra på linux kan du hämta maximal information om memcachat minne, men det finns få verktyg som följer med memcached källkodspaket som övervakningsverktyg, damemtop etc.,. Jag använder verktyget övervakningsverktyg för att övervaka memcache.

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

Exempel:

En liten ansträngning från min sida för att ställa in pgmemcache och förstå grunderna. Hoppas det var till hjälp. Fortsätt att lägga upp dina kommentarer eller förslag som är mycket uppskattade.


  1. MySQL Conditional Insert

  2. Skickar parametrar till en JDBC PreparedStatement

  3. Tips för bättre databasdesign

  4. Oracle till PostgreSQL:ANSI yttre kopplingssyntax i PostgreSQL