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

pgmemcache opsætning og brug

Forudindlæsning eller cachelagring af tabellen i PostgreSQL er en svær opgave, fordi PostgreSQL ikke tilbyder en enkelt stor hukommelsesstyring på synkroniseringsniveau. Alle minderne er uafhængige. Caching er muligt med tredjepartsværktøjer som memcached.

pgmemcache er et sæt PostgreSQL brugerdefinerede funktioner (API'er), der giver en grænseflade til memcached. pgmemcache, forudsætninger anbefaler at have libmemcached, men det anbefales også at installere memcached sammen med det. Min præsentation består af installation/caching/monitorering ved hjælp af pgmemcache API'er. Da jeg ikke er udvikleren eller hackeren :), så er min måde at implementere på i en meget enkel metode.

Points:

  • Gemmer værdi i cache på basis af nøgle-/værdi-midler, det anbefales at beholde tabellen med primær nøgle/unik nøgle.
  • Ingen dataredundans – Hvis memcached går ned eller løber tør for plads, vil nye registreringer og opdateringer gå tabt.
  • Understøtter alle memcached-kommandoer (set/get(single/multi)/delete/replace/incr/stats)
  • Efter at have opbevaret dataene i memcached, og hvis du dropper tabellen fra backend, vil memcached ikke give nogen fejl. Det er hele din ledelse, hvordan du vedligeholder det.
  • Ingen mulighed for at gentage data eller bestemme, hvilke nøgler der er blevet gemt.
  • Du kan aldrig bringe en memcached server ned eller tilføje en ny til puljen, mens folk spiller eller har forbindelse.
  • Hvis baggrundsopdateringsprocessen stopper af en eller anden grund, sker der ikke opdateringer, og der er en mulighed for, at den memcachede server kan blive fyldt op.
  • Hver PostgreSQL-backend skal bindes til memcached-porte, før de får adgang til dataene.
  • Memcached kører på standardport 11211

Forudsætninger:

  1. PostgreSQL 8.4. eller derover
  2. libevent
  3. memcached
  4. libmemcached
  5. pgmemcache
  6. Overvågningsværktøjer (overvågningsværktøjer, damemtop osv.)

Installation:
Trin 1. (libevent)

Libevent API er vigtigt, når du konfigurerer pgmemcache, jeg foretrækker at have biblioteker som første trin i installationen. Så lad os starte med at libevent-biblioteket konfigureres på standardplacering.

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

Trin 2 (memcached)

Installer memcached ved at aktivere 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

Trin 3. (libmemcached)

pgmemcache er bygget oven på libmemcached. Libmemcached leder efter memcache binær placering, så indstil stien til memcached binære filer, før du fortsætter det.

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

Trin 4 (pgmemcache)

pgmemcache API vil hjælpe med at interagere med memcached som caching/hentning af 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 vil oprette pgmemcache.sql-fil med alle API'er til at interagere med memcache under PG-bidragsplacering. For at oprette pgmemcache API'er skal du bare udføre filen pgmemcache.sql i hele databasen.

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

pgmemcache API's liste:

Bemærk: Mens du udfører .sql-fil, kan du støde på fejl som "ISTFATAL:kunne ikke indlæse biblioteket "/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so":libmemcached.so.8:kan ikke åbne en delt objektfil:Ingen sådan fil eller vejviser". Betyder, at PG-instansen ikke blev indlæst med det nyoprettede bibliotek. Opløsning, indstil PATH og LD_LIBRARY_PATH og genstart forekomsten for at genkende bibliotekerne.

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

Hvis du vil indlæse pgmemcachen som standard til din PG-instans, skal du redigere postgresql.conf-filen og ændre følgende parametre og genstarte klyngen.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Konfiguration:
Trin 1.

Til caching af data skal du først initialisere hukommelsen, når hukommelsen er tildelt, senere har PG backends ansvar for at binde og skubbe dataene ind i cachen. Her har jeg startet min memcache på localhost med 512MB på standardport 11211. -d betyder start dæmonen. Al min træning er på localhost.

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

Bemærk:For at hente data fra cachen skal hver PostgreSQL-backend først binde og hente dataene.

Trin 2.

Bind instansen til den kørende memcache-port. Efter binding skal du gå til kassen for den gemcachede statistik.

Trin 3.

Nu er det tid til at cache data i memcached, Memcached bruger nøgler/værdi til at opbevare data i sin hukommelse, så sørg for at din tabel har Primær/Unik nøgle, så det bliver nemt at hente dem. Som nævnt er der meget gode API'er at lege med om at beholde værdien og få adgang til dem, i mit eksempel bruger jeg memcache_set() til at beholde værdien og memcache_get() til at hente data.

Når først værdien er sat i memcached, er det nu dit ansvar at binde din backend til memcached, og ved hjælp af pgmemcache API'er kan du få adgang til dataene. Hver Postgres-backend skal bindes før adgang. Find eksemplet nedenfor.

Henter data fra cachen

Overvågning

Hvis du er meget god i Linux, kan du trække maksimal information om memcached hukommelse, men der er få værktøjer, der følger med memcached source pack som overvågningsværktøjer, damemtop osv.,. Jeg bruger overvågningsværktøjer til overvågning af memcache.

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

Eksempel:

En lille indsats fra min side for at opsætte pgmemcache og forstå det grundlæggende. Håber det var nyttigt. Fortsæt med at sende dine kommentarer eller forslag, som er meget værdsat.


  1. Hvordan får man forskel mellem to rækker til et kolonnefelt?

  2. Tving indeksbrug i Oracle

  3. SQL Server-sikkerhedsovervejelser

  4. Er der nogen forskel mellem IS NULL og =NULL