Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


dimanche 21 juin 2009

PostgresqlFr.org Guide de démarrage de PostgreSQL

Voici un lien toujours bon à mettre de côté que je n'avais pas encore consulté sur le site de postgresqlfr.org.

Lien: http://blog.postgresql.fr/index.php?post/2009/06/20/Guide-de-demarrage-rapide-avec-PostgreSQL

lundi 8 juin 2009

[PostgreSQL 8.3] Valeur la plus basse pour shared_buffers pour lancer un serveur

Sans tenir compte du shmmax pour lequel j'ai

postgres@olivia:~$ cat /proc/sys/kernel/shmmax
33554432

Soit shmmax = 33554432 bytes.

Ayant 1 kB = 1024 bytes et 1 MB = 1024kB, j'ai donc shmmax = 33554432/(1024*1024)= 32 MB.

Je suis loin de dépasser ce seuil. D'après la documentation:

D'après http://docs.postgresqlfr.org/8.3/kernel-resources.html, on a donc

PostgreSQL™ utilise un sémaphore par connexion autorisée (max_connections) et par processus autovacuum autorisé (autovacuum_max_workers), le tout par ensemble de 16.

Donc shared_buffers >= (max_connections+autovacuum_max_workers) * 16 kB Comme chez moi autovacuum_max_workers = 3, on aura donc si je mets pour max_connections = 11 donc shared_buffers>=14*16=224

Faisons quelques tentaives:

  1. shared_buffers = 223kB
    postgres@olivia:~$ pg_ctl restart -o "-i -p 5441" -D disk1
    pg_ctl: PID file "disk1/postmaster.pid" does not exist
    Is server running?
    starting server anyway
    postgres: the number of buffers (-B) must be at least twice the number of allowed connections (-N) and at least 16
    server starting
    postgres@olivia:~$ pg_ctl status -o "-i -p 5441" -D disk1
    pg_ctl: no server running
    
    Le serveur ne démarre pas!!!
  2. shared_buffers = 224kB
    postgres@olivia:~$ pg_ctl restart -o "-i -p 5441" -D disk1
    pg_ctl: PID file "disk1/postmaster.pid" does not exist
    Is server running?
    starting server anyway
    server starting
    postgres@olivia:~$ LOG:  database system was shut down at 2009-06-08 23:43:29 CEST
    LOG:  database system is ready to accept connections
    LOG:  autovacuum launcher started
    
    postgres@olivia:~$ pg_ctl status -o "-i -p 5441" -D disk1
    pg_ctl: server is running (PID: 16182)
    /opt/pgsql/bin/postgres "-i" "-p" "5441"
    
    Le serveur démarre

dimanche 7 juin 2009

[PostgreSQL 8.3] Relecture des articles de Guillaume Lelarge (Dalibo.org)

Je viens de passer ces derniers jours ainsi que ma soirée de samedi à relire les articles de Guillaume Lelarge - Dalibo.org - sur les divers points de PostgreSQL 8.3

Rien de compliqué en soi mais le cerveau était un peu fatigué ce soir avec tous ces informations qui ont commencées à fuser à gauche et à droite dans mon cerveau: WAL, HOT,VACUUM, wal_buffers etc... Résultat des courses: un petit efferalgan avant d'aller me coucher car trop d'informations dans le cerveau - puisque j'ai une mémoire de poisson rouge à ce qu'il paraît -. Disons que ce soir mon cerveau est en mode VACUUM FULL ...J'aurais quand même appris des choses intéressantes

En tout cas ça m'aura fait du bien de revoir mes acquis que je n'avais pas réactiver depuis plusieurs mois. Merci à toi Guillaume pour la qualité de tes articles. Comme toujours avec toi en dehors de tes qualités de pédagogue, il faut relire tes articles en entier pour trouver la petite phrase ou le paragraphe qui va faire mouche et qui vaudra son pesant d'or ou éguiser ma curiosité...

Liste des articles: http://www.dalibo.org/articles

Je n'ai pas encore exploré les possibilités de la 8.4. Elle est encore en beta pour le moment et n'est prévue que pour cet été/automne 2009

samedi 6 juin 2009

[PostgreSQL 8.3] Remonter dans les logs les requêtes qui se soldent par une erreur

Pendant mes investigations sur la version 8.3, il suffit d'avoir

postgres=# show log_min_error_statement;
 log_min_error_statement 
-------------------------
 error
(1 row)

postgres=# show log_min_messages ;
 log_min_messages 
------------------
 notice
(1 row)

Ces deux paramètres sont à modifier dans le fichier de configuration de PostgreSQL. Au lieu de procéder à un redémarrage du serveur, l'appel à pg_reload_conf() (="SELECT pg_reload_conf()") suffit à prendre en considération les précédentes modifications.