Skip to content

MySQL contre PostgreSQL

January 22, 2010

La question m’a souvent posée un problème: qui de PostgreSQL ou de MySQL est la base de données la mieux adaptée? Lors de recherches sur Google, on peut trouver différents articles mais bizarrement beaucoup sont assez vieux! Que penser de ces deux bases de données proposées en standard sur la plupart des plateformes Unix? Quel choix pour héberger votre base de données?

Points communs:

  • Installation facile sous Unix et Windows. Il n’est plus nécessaire d’installer PostgreSQL à partir de Cygwin. En effet, PostgreSQL poosède un installateur simple à utiliser.
  • Propriétés ACID (atomicité, cohérence, isolation et durabilité) avec les tables InnoDB sous MySQL. Sous PostgreSQL, les propriétés ACID sont natives (il n’y a pas, au final, de differences).
  • Démarrage via les services NT (sous Windows).
  • Les sauvegardes instantanées (dans un état stable) sont possibles aussi bien sous MySQL que PostgreSQL. MySQL demande quelques paramètres.
  • Les sauvegardes sont effectuées sous forme de requêtes SQL. Les fichiers en sortie peuvent être compressés, envoyés via FTP, etc.
  • Possibilité de créer des vues (CREATE VIEW …)

Les différences:

  • PostgreSQL demande 40Mo d’espace disque pour la création d’une base de données vide (dont à priori 16Mo pour le fichier de log).
  • La précision du TIMESTAMP est à la milliseconde sur PostgreSQL et seulement à la seconde pour MySQL.
  • Utilisation de séquences dans PostgreSQL avec possibilité de déclarer une colonne ‘SERIAL’ pour simplifier l’écriture. Sous MySQL, il ne peut y avoir qu’une colonne auto-incrémentée.
  • Création obligatoire d’un utilisateur “postgresql” (y compris sous Windows).
  • Pour chaque connexion, PostgreSQL crée un processus. MySQL utilise des threads. La technique de PostgreSQL est éprouvée (Oracle ou Apache l’utilisent). La connexion à MySQL est plus légère, en revanche en cas d’une erreur dans le code, tout le serveur plante. Dans le cas de PostgreSQL, seule la connexion est détruite (on peut également faire un kill -9 le cas échéant sur une connexion qui pose problème).
  • Maintenance: aucune pour MySQL. Sous PostgreSQL, il est nécessaire d’appeler la commande VACUUM pour maintenir des performances acceptables. Cet appel peut s’effectuer au travers d’un exécutable. La commande VACUUM a toujours eu une très mauvaise réputation mais il semble qu’à partir de la version 8, elle soit bien plus performante et utilisable durant le fonctionnement normal de la base (aux heures creuses de préférence).
  • MySQL posséde un “INSERT OR UPDATE” qui permet d’insérer une valeur ou de la remplacer si celle-ci existe.
  • PostgreSQL possède un joli outil graphique d’administration natif (sous Windows).

En conclusion, PostgreSQL et MySQL (utilisant le moteur InnoDB) sont assez semblables. En revanche, je n’ai pas fais de tests de performances. Cela serait sans doute un critère utile afin de juger les deux bases de données. Si d’autres informations me parviennent, je compléterai cet article.

Vous pourrez également consulter l’article de BI Expérience.

Advertisements

From → Computers

Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: