PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Konfiguracja i użytkowanie pgmemcache

Wstępne ładowanie lub buforowanie tabeli w PostgreSQL jest trudnym zadaniem, ponieważ PostgreSQL nie oferuje pojedynczego, dużego zarządzania pamięcią na poziomie synchronizacji. Wszystkie wspomnienia są niezależne. Buforowanie jest możliwe dzięki narzędziom innych firm, takim jak memcached.

pgmemcache to zestaw funkcji zdefiniowanych przez użytkownika PostgreSQL (API), które zapewniają interfejs do memcached. pgmemcache, wymagania wstępne zalecają mieć libmemcached, jednak zaleca się również zainstalowanie memcached razem z nim. Moja prezentacja składa się z instalacji/cachowania/monitorowania przy użyciu API pgmemcache. Ponieważ nie jestem programistą ani hakerem :), więc mój sposób implementacji jest bardzo prosty.

Punkty:

  • Przechowuje wartość w pamięci podręcznej na podstawie wartości Klucz/Wartość, zalecane jest przechowywanie tabeli z kluczem podstawowym/unikalnym.
  • Brak nadmiarowości danych – Jeśli pamięć memcached przestanie działać lub zabraknie miejsca, nowe rekordy i aktualizacje zostaną utracone.
  • Obsługuje wszystkie polecenia memcached (set/get(single/multi)/delete/replace/incr/stats)
  • Po umieszczeniu danych w memcached i jeśli usuniesz tabelę z zaplecza, memcached nie zwróci żadnych błędów. To wszystko twoje zarządzanie, jak je utrzymujesz.
  • Brak możliwości iteracji danych lub określenia, jakie klucze zostały zapisane.
  • Nigdy nie można wyłączyć serwera memcached ani dodać nowego do puli, gdy ludzie grają lub są w kontakcie.
  • Jeśli proces aktualizacji w tle zatrzyma się z jakiegokolwiek powodu, aktualizacje nie nastąpią i istnieje możliwość, że serwer memcached może się zapełnić.
  • Każdy backend PostgreSQL musi połączyć się z portem memcached przed uzyskaniem dostępu do danych.
  • Memcached działa na domyślnym porcie 11211

Wymagania wstępne:

  1. PostgreSQL 8.4. lub powyżej
  2. Libevent
  3. w pamięci podręcznej
  4. libmemcached
  5. pgmemcache
  6. Narzędzia do monitorowania (narzędzia do monitorowania, damemtop itp.)

Instalacja:
Krok 1. (libevent)

Libevent API jest ważne przy konfiguracji pgmemcache, wolę mieć biblioteki jako pierwszy krok instalacji. Zacznijmy więc od konfiguracji biblioteki libevent w domyślnej lokalizacji.

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

Krok 2 (w pamięci podręcznej)

Zainstaluj memcached, włączając 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

Krok 3. (libmemcached)

pgmemcache jest zbudowany na bazie libmemcached. Libmemcached szuka lokalizacji plików binarnych memcache, więc ustaw ścieżkę do plików binarnych memcached przed kontynuowaniem.

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

Krok 4 (pgmemcache)

API pgmemcache pomoże w interakcji z memcached, takim jak buforowanie/pobieranie danych.

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

Instalacja utworzy plik pgmemcache.sql ze wszystkimi API do interakcji z memcache w lokalizacji PG contrib. Aby utworzyć API pgmemcache, po prostu uruchom plik pgmemcache.sql w całej bazie danych.

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

Lista API pgmemcache:

Uwaga: Podczas wykonywania pliku .sql możesz napotkać błąd, taki jak „ISTFATAL:nie można załadować biblioteki”/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so”:libmemcached.so.8:nie można otworzyć udostępnionego pliku obiektu:Brak takiego pliku lub informator". Oznacza to, że instancja PG nie została załadowana nowo utworzoną biblioteką. Rozdzielczość, ustaw PATH i LD_LIBRARY_PATH i uruchom ponownie instancję, aby rozpoznać biblioteki.

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

Jeśli chcesz załadować pgmemcache jako domyślną instancję PG, edytuj plik postgresql.conf i zmień następujące parametry i zrestartuj klaster.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Konfiguracja:
Krok 1.

Aby buforować dane, najpierw musisz zainicjować pamięć, gdy pamięć zostanie przydzielona, ​​a później PG odpowiada za powiązanie i wepchnięcie danych do pamięci podręcznej. Tutaj uruchomiłem mój memcache na localhoście z 512MB na domyślnym porcie 11211. -d oznacza uruchomienie demona. Całe moje ćwiczenie odbywa się na lokalnym hoście.

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

Uwaga:Aby pobrać dane z pamięci podręcznej, każdy backend PostgreSQL powinien najpierw powiązać i pobrać dane.

Krok 2.

Powiąż instancję z uruchomionym portem memcache. Po związaniu, sprawdź statystyki memcached.

Krok 3.

Teraz nadszedł czas na buforowanie danych w memcached, Memcached używa kluczy/wartości do przechowywania danych w swojej pamięci, więc upewnij się, że twoja tabela ma klucz główny/unikalny, aby pobieranie było łatwe. Jak wspomniano, istnieją bardzo dobre interfejsy API, którymi można się bawić przy zachowaniu wartości i dostępie do nich, w moim przykładzie używam memcache_set() do zachowania wartości i memcache_get() do pobierania danych.

Po ustawieniu wartości w memcached, teraz Twoim obowiązkiem jest powiązanie backendu z memcached, a za pomocą pgmemcache API możesz uzyskać dostęp do danych. Każdy backend Postgresa musi zostać powiązany przed uzyskaniem dostępu. Proszę znaleźć przykład poniżej.

Pobieranie danych z pamięci podręcznej

Monitorowanie

Jeśli jesteś bardzo dobry w Linuksie, możesz wyciągnąć maksimum informacji z pamięci memcached, jednak istnieje kilka narzędzi, które są dostarczane z pakietem źródłowym memcached, takich jak narzędzia do monitorowania, damemtop itp. Używam narzędzia monitorowania do monitorowania pamięci podręcznej.

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

Przykład:

Mały wysiłek z mojej strony, aby skonfigurować pgmemcache i zrozumieć podstawy. Mam nadzieję, że to było pomocne. Nadal publikuj swoje komentarze lub sugestie, które są bardzo cenione.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pierwsze kroki z replikacją strumieniową PostgreSQL

  2. Postgresql - nie można usunąć bazy danych z powodu niektórych automatycznych połączeń z DB

  3. W ramach funkcji wyzwalacza, jak uzyskać, które pola są aktualizowane?

  4. Oblicz następny klucz podstawowy - o określonym formacie

  5. Jak zdekodować szesnastkowe kolumny bajtowe PostgreSQL do int16/uint16 w r?