Lettre d'information de Dalibo

L'actualité de PostgreSQL et de ses projets satellites. Septembre 2008.

Évènements PostgreSQL

Le 4 octobre 2008 se tient le PGday français à Toulouse. Cette journée sera l'occasion d'assister à une série de conférences sur PostgreSQL. Plus d'informations sur http://www.pgday.fr

L'inscription est libre et gratuite.

Dalibo vient de publier deux articles écrits par Guillaume Lelarge pour GNU/Linux Magazine France. Ils sont disponibles sous Licence Creative Commons « Paternité - Pas d'Utilisation Commerciale - Pas de Modification 2.0 ». Vous les trouverez sur dalibo.org :

Attention, Le deuxième article a un supplément sur dalibo.org.

Calendrier PostgreSQL

  • 17 et 18 octobre, PGday Européen à Prato, Italie.

Actualité des produits dérivés

  • Archiveopteryx 2.1.1 et 3.0.0 (sortie le 25 août), Serveur mail optimisé pour de gros volumes, http://aox.org/

Question Technique

Pourquoi il ne faut jamais utiliser kill -9 avec PostgreSQL ?

Beaucoup d'administrateurs utilisent la commande « kill -9 <pid> » pour arrêter une application devenue ingérable. Autant cela fonctionne bien pour la majorité des applications, autant cela peut avoir des conséquences désastreuses pour PostgreSQL. En voici l'explication.

Au démarrage de PostgreSQL, ce dernier alloue une partie de mémoire à un cache disque qu'il gère lui-même. Plus exactement, chaque processus fils du postmaster va pouvoir lire et écrire dans ce bloc de mémoire partagée.

Si quelqu'un tue le processus postmaster (donc le processus père des processus postgres), les fils seront toujours présents et pourront toujours écrire dans la partie de mémoire partagée (mais aussi dans les fichiers de données).

En revanche, plus aucune connexion n'est alors possible. Un administrateur aura tendance à relancer le service. En temps normal, il ne peut repartir car dès le départ il découvre le fichier postmaster.pid lui indiquant qu'un postmaster travaille déjà sur ce fichier. Un administrateur imprudent peut alors supprimer ce fichier sans se soucier des processus fils toujours en cours d'exécution. Après avoir supprimé ce fichier, postmaster peut démarrer et allouer une autre partie de mémoire pour son cache disque.

C'est maintenant que les problèmes vont arriver. Si un processus du postmaster tué veut écrire dans les fichiers de données, il pose un verrou. L'information sur ce verrou est disponible uniquement en mémoire partagée. Ainsi, seuls les processus postgres du processus postmaster tué partagent ces informations. De ce fait, un autre processus postgres, issu lui du second postmaster, peut écrire en même temps dans ce fichier.

Et c'est là que nous arrivons à une corruption des données.

Comment éviter cela… Tout d'abord, ne jamais exécuter un « kill -9 » de postmaster. Si jamais cela s'avérait nécessaire, il faut s'assurer que les processus fils sont morts avec. Dans le doute, on redémarrera le serveur (physique).

Pour plus d'informations, n'hésitez pas à lire en détails le thread « select on 22 GB table causes "An I/O error occured while sending to the backend." exception».

Avancées sur PostgreSQL

Greg Smith a annoncé la disponibilité de http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server. Cette page du Wiki de PostgreSQL a pour but de faire un tour des paramètres essentiels à configurer pour toute installation de PostgreSQL. C'est un document à lire et à bien comprendre.

Tom Lane a beaucoup travaillé sur le planificateur : représentation des éléments ORDER BY/GROUP BY/DISTINCT, amélioration du SELECT DISTINCT, utilisation du hachage pour UNION, optimisation de EXISTS, etc.

Magnus a déplacé le fichier pgstat.tmp (contenant les statistiques de tables) dans un répertoire temporaire (modifiable par une variable de configuration, mais par défaut sous $PGDATA) pour permettre l'utilisation d'un disque RAM et réduire ainsi les temps d'écriture.

Quant à Alvaro Herrera, il a validé son code pour que l'autovacuum soit capable de distinguer tables HEAP et tables TOAST. Ainsi le VACUUM peut survenir que sur la table qui en a vraiment besoin.

Mais le gros du travail aura lieu début septembre pour l'avant-dernière Commit-Fest.

Avancées sur pgAdmin

L'été n'a pas été chômé par les développeurs de pgAdmin. Il y a eu une grosse activité en nouveaux développements ces deux derniers mois.

Commençons par les GSoC (Google Summer of Code, des projets sponsorisés par Google auprès des étudiants). Le premier concerne pgScript. Il a pour but la création d'un pseudo langage destiné à l'écriture de petits scripts pour pgAdmin. Pour cela, il ajoute à la syntaxe SQL la notion de variables locales et des instructions de flux (tests if-then-else, boucles, etc).

Le second concerne un constructeur graphique de requêtes. Le mieux est d'aller lire directement le billet écrit par Guillaume Lelarge sur ce sujet.

Guillaume a réalisé un gros travail en reprenant tous les dialogues pour leur permettre d'être redimensionnés. C'est intéressant pour les petits écrans mais aussi pour les gros. Chaque utilisateur peut décider de la taille des dialogues (et conserver cette taille à chaque démarrage de l'application).

Suite à la lecture de ce billet, Guillaume a aussi travaillé sur l'ajout d'une fonctionnalité manquante : une fois une table créée, pgAdmin n'autorisait pas l'ajout/suppression de tables héritées à cette table alors que c'est une fonctionnalité disponible depuis PostgreSQL 8.2.

Fin juillet, il a ajouté le support des objets de recherche plein texte. Il a décrit la plupart des étapes sur son blog : Ajout de la recherche plein texte sur pgAdmin3, Ajout de la recherche plein texte sur pgAdmin3 - 2ème jour, Ajout de la recherche plein texte sur pgAdmin3 - 3ème jour.

Enfin, son travail sur la possibilité d'activer le champ texte SQL des dialogues de propriété a été accepté. Il est donc possible maintenant de modifier certains paramètres d'un objet et, si on n'est pas satisfait des requêtes produites automatiquement par l'interface, de modifier les requêtes avant leur exécution.

Magnus, quant à lui, a corrigé deux petits soucis avec la fenêtre d'état du serveur. En appuyant sur la touche « Esc », cela validait le dialogue et demandait confirmation pour annuler la requête en cours d'exécution si l'utilisateur avait auparavant sélectionné une ligne. De plus, il a diminué la taille minimale de la fenêtre.

De tous ces travaux, seul le GSoC pgScript n'a pas encore été enregistré dans le dépôt des sources. Magnus travaille en ce moment avec l'étudiant pour finaliser l'intégration.

Avancées sur phpPgAdmin

Après quelques corrections en juillet, la version corrective 4.2.1 de phpPgAdmin est sortie au début du mois d'août. Elle est téléchargeable sur sourceforge.net.

Quelques autres bugs ont été corrigés après coup et une nouvelle fonctionnalité est apparue pour ajouter les options d'export au niveau des schémas.

Enfin, le serveur de démonstration utilise maintenant une version de développement récupérée à partir du dépôt git, ce qui assure les utilisateurs d'avoir vraiment la dernière version de développement.

Sessions de formation

Dalibo, en partenariat avec la société Mandriva, organise une session de formation « PostgreSQL Avancé » en septembre à Paris. Destinée aux administrateurs confirmés de PostgreSQL (ou autre SGBD), la formation « PostgreSQL Avancé » donne les clés pour comprendre, sécuriser et optimiser les bases des données PostgreSQL.

Dalibo propose également une formation « Administration PostgreSQL » en octobre ainsi qu'une session « Réplication avec Slony » en novembre.

Plus d'informations sur : http://dalibo.com/-Formations-.html

Dernières versions

Depuis le 11 juin 2008 :

  • 8.3.3
  • 8.2.9
  • 8.1.13
  • 8.0.17
  • 7.4.21

Version Windows supportée :

  • 8.3.3
  • 8.2.9

Informations Générales

Cette lettre d'information présente l'actualité francophone et internationale de PostgreSQL et de ses “logiciels satellites”. Elle vous est proposée par la société Dalibo.

Dalibo est une société d'expertise sur PostgreSQL et tous ses projets satellites.

Dalibo peut vous accompagner dans la mise en œuvre efficace et professionnelle de PostgreSQL. Qu'il s'agisse d'un nouveau projet ou de la migration d'un existant.

Si vous ne souhaitez plus recevoir cette lettre, envoyez simplement un courriel à l'adresse : newsletter-desabonnement@listes.dalibo.com

Vous pouvez retrouver cette lettre à l'adresse suivante :

http://dalibo.org/septembre_2008

Afficher le texte source