PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Configuration et utilisation de pgmemcache

Le préchargement ou la mise en cache de la table dans PostgreSQL est une tâche difficile, car PostgreSQL n'offre pas une seule grande gestion de la mémoire au niveau de la synchronisation. Toutes les mémoires sont indépendantes. La mise en cache est possible avec les outils tiers comme memcached.

pgmemcache est un ensemble de fonctions définies par l'utilisateur (API) PostgreSQL qui fournissent une interface à memcached. pgmemcache, les prérequis recommandent d'avoir libmemcached, mais il est également recommandé d'installer memcached avec lui. Ma présentation consiste en une installation/mise en cache/surveillance à l'aide des API pgmemcache. Comme je ne suis pas le développeur ou le hacker :), mon mode de mise en œuvre est donc très simple.

Point :

  • Stocke la valeur dans le cache sur la base de la clé/valeur signifie qu'il est recommandé de conserver la table avec la clé primaire/clé unique.
  • Pas de redondance des données – Si memcached tombe en panne ou manque d'espace, les nouveaux enregistrements et mises à jour seront perdus.
  • Prend en charge toutes les commandes memcached (set/get(single/multi)/delete/replace/incr/stats)
  • Après avoir conservé les données dans memcached et si vous supprimez la table du backend, memcached ne générera aucune erreur. C'est toute votre gestion de la façon dont vous l'entretenez.
  • Aucune possibilité d'itérer sur les données ou de déterminer quelles clés ont été stockées.
  • Vous ne pouvez jamais arrêter un serveur memcached ou en ajouter un nouveau au pool pendant que des personnes jouent ou sont connectées.
  • Si le processus de mise à jour en arrière-plan s'arrête pour une raison quelconque, les mises à jour ne se produisent pas et il est possible que le serveur memcached se remplisse.
  • Chaque backend PostgreSQL doit se lier au port memcached avant d'accéder aux données.
  • Memcached s'exécute sur le port par défaut 11211

Pré-requis :

  1. PostgreSQL 8.4. ou supérieur
  2. libévent
  3. mémcaché
  4. libmemcached
  5. pgmemcache
  6. Outils de surveillance (outils de surveillance,damemtop,etc.)

Installation :
Étape 1. (libévent)

L'API Libevent est importante lors de la configuration de pgmemcache, je préfère avoir des bibliothèques comme première étape de l'installation. Commençons donc par la configuration de la bibliothèque libevent à l'emplacement par défaut.

Lien de téléchargement pour 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

Étape 2 (mémcaché)

Installez memcached en activant le libevent.

Lien de téléchargement pour memcached :
http://memcached.googlecode.com/files/memcached-1.4.6.tar.gz
cd /usr/local/src/memcached-1.4.6
------sur 32 bits
exporter 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

Étape 3. (libmemcached)

pgmemcache est construit au-dessus de libmemcached. Libmemcached recherche l'emplacement binaire memcache, donc définissez le chemin vers les binaires memcached avant de continuer.

export PATH=/opt/PostgreSQL/9.0/bin/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib:/opt/PostgreSQL/9.0/lib:$LD_LIBRARY_PATH
Lien de téléchargement :
http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
cd libmemcached-0.50
./configure
make
faire installer

Étape 4 (pgmemcache)

L'API pgmemcache vous aidera à interagir avec memcached comme la mise en cache/récupération de données.

Lien de téléchargement :
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
ou
make
make install

L'installation créera un fichier pgmemcache.sql avec toutes les API pour interagir avec memcache sous l'emplacement PG contrib. Pour créer des API pgmemcache, il suffit d'exécuter le fichier pgmemcache.sql dans toute la base de données.

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

Liste des API pgmemcache :

Remarque : Lors de l'exécution du fichier .sql, vous pouvez rencontrer une erreur telle que "ISTFATAL :impossible de charger la bibliothèque "/opt/PostgreSQL/9.0/lib/postgresql/pgmemcache.so":annuaire". Cela signifie que l'instance PG n'a pas été chargée avec la bibliothèque nouvellement créée. Résolution, définissez le PATH et LD_LIBRARY_PATH et redémarrez l'instance pour reconnaître les bibliothèques.

Par exemple :-
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 redémarrage

Si vous souhaitez charger le pgmemcache par défaut sur votre instance PG, modifiez le fichier postgresql.conf et modifiez les paramètres suivants et redémarrez le cluster.

shared_preload_libraries='pgmemcache'
custom_variable_classes='pgmemcache'

Configuration :
Étape 1.

Pour la mise en cache des données, vous devez d'abord initialiser la mémoire, une fois la mémoire allouée, plus tard, PG backends a la responsabilité de lier et de pousser les données dans le cache. Ici, j'ai démarré mon cache mémoire sur localhost avec 512 Mo sur le port par défaut 11211. -d signifie démarrer le démon. Tous mes exercices sont sur localhost.

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

Remarque :Pour récupérer les données du cache, chaque backend PostgreSQL doit d'abord lier et récupérer les données.

Étape 2.

Liez l'instance au port Memcache en cours d'exécution. Après la liaison, vérifiez les statistiques memcached.

Étape 3.

Maintenant, il est temps de mettre les données en cache dans memcached, Memcached utilise des clés/valeur pour résider les données dans sa mémoire, alors assurez-vous que votre table a une clé primaire/unique afin que la récupération soit facile. Comme mentionné, il existe de très bonnes API pour conserver la valeur et y accéder, dans mon exemple, j'utilise memcache_set() pour conserver la valeur et memcache_get() pour récupérer les données.

Une fois la valeur définie dans le memcached, il est maintenant de votre responsabilité de lier votre backend à memcached et avec l'aide de l'API pgmemcache, vous pouvez accéder aux données. Chaque backend Postgres doit se lier avant d'accéder. Veuillez trouver l'exemple ci-dessous.

Obtenir des données du cache

Surveillance

Si vous êtes très bon sous Linux, vous pouvez extraire un maximum d'informations sur la mémoire memcached, mais il existe peu d'outils fournis avec le pack source memcached comme les outils de surveillance, damemtop, etc. J'utilise l'utilitaire monitoring-tools pour surveiller memcache.

utilisation :-
memcached-tool localhost display
memcached-tool localhost dump
memcached-tool localhost stats | grep octets

Exemple :

Un petit effort de ma part pour configurer pgmemcache et comprendre les bases. J'espère que cela a été utile. Continuez à publier vos commentaires ou suggestions qui sont très appréciés.