4 janvier 2023

Performances logicielles et choix de conception. Quand la Base de données est le goulot d'étranglement et PostgreSQL la solution à tous les maux.

Une brève analyse des problèmes logiciels courants dérivés du mauvais choix d'outils et en particulier du fait de préférer MySQL à PostgreSQL.

PostgreSQL-vs-MySQL

S'il y a une chose qui m'est restée à l'esprit dans la mise en scène que j'ai faite en cinquième année (il y a 23 ans) à Elettromeccanica Cognigni à Civitanova Marche, ce sont ces quelques mots significatifs "Les bons outils font déjà la moitié du travail" .

Cette phrase a été prononcée par le grand-père d'un de mes amis chers, qui avait l'habitude de venir rendre visite au propriétaire de l'entreprise et de parcourir ou de parler de ceci ou de cela, comme le font habituellement les personnes âgées qui ont le temps pendant la journée de cultiver leurs amitiés. et faire des visites ici et là.

J'étais en train de vider une armature d'un moteur électrique (un enroulement électrique) en battant le ciseau avec une pince remédiée, lorsque j'ai entendu ces mots retentissants et que j'ai ensuite été invité à utiliser un marteau.

Travail plus précis, plus rapide et plus confortable. Dans quelques semaines, le stage scolaire serait terminé et j'aurais terminé cette expérience au contact d'accumulateurs, de bobinages, de moteurs électriques, etc. précieux conseils et cette sentence solennelle prononcée à son effet est encore aujourd'hui l'une des pierres angulaires de mon métier, et plus largement de mon mode de vie.

On pourrait manger la soupe avec une fourchette, mais une cuillère c'est sûrement mieux.

Le problème avec les applications utilisant MySQL

Il y a un problème qui affecte presque tout le monde, impliquant principalement toutes les situations dans lesquelles vous devez faire face à des logiciels écrits par d'autres qui utilisent une base de données MySQL ou des forks connexes tels que MariaDB, Percona Server, qui sont en tout cas basés et dérivés de MySQL lui-même.

Lorsque nous travaillons avec des CMS tels que WordPress, WooCommerce, Magento, Prestashop et autres, nous finissons toujours par avoir affaire à un SGBDR tel que MySQL ou un dérivé, et il semble qu'il soit normal, juste et approprié d'avoir un SGBDR qui semble aussi extrêmement rapide et performant.

Le problème n'est pas un gros problème lorsque la base de données ne devient pas le goulot d'étranglement de notre application, et des performances qui affectent inévitablement l'expérience utilisateur, le référencement, le chiffre d'affaires et le profit de l'entreprise.

Bien qu'il ait pu améliorer considérablement la vitesse et les performances de MySQL au fil des ans, par exemple en passant de l'ancien moteur MyISAM vers InnoDB vous devez toujours vous demander si MySQL (ou les fourches associées) est la meilleure solution du marché en termes de fonctionnalités, de performances et de vitesse.

MySQL est extrêmement lent par rapport à PostgreSQL

Par exemple, si nous recherchions un SGBDR compatible avec SQL Standard qui soit open source, gratuit, bien supporté et documenté, multi-architecture, portable, extrêmement performant, nous exclurons sûrement les solutions commerciales et propriétaires à source fermée telles que Oracle DB, SQL Server ou DB2 d'IBM.

Cependant, nous pourrions et devrions envisager PostgreSQL ou simplement Postgres.

PostgreSQL est un puissant système de base de données relationnelle objet open source avec plus de 35 ans de développement actif qui lui a valu une solide réputation de fiabilité, de robustesse des fonctionnalités et de performances.

Aussi connu sous le nom Postgres , est un système de gestion de base de données relationnelle (RDBMS) libre et open source qui met l'accent sur l'extensibilité et la conformité SQL. Il s'appelait à l'origine POSTGRES, faisant référence à ses origines en tant que successeur de la base de données Ingres développée à l'Université de Californie à Berkeley. En 1996, le projet a été renommé PostgreSQL pour refléter sa prise en charge de SQL . Après une révision en 2007, l'équipe de développement a décidé de conserver le nom PostgreSQL et l'alias Postgres. 

PostgreSQL présente transactions avec Propriétés d'atomicité, de consistance, d'isolement, de durabilité (ACID), vues actualisables automatiquement, viste matérialisés , déclencheurs , clés étrangères et procédures stockées . Il est conçu pour gérer une grande variété de charges de travail, des machines uniques aux entrepôts de données ou aux services Web avec de nombreux utilisateurs simultanés. Il s'agit de la base de données par défaut pour macOS Server et est également disponible pour Windows, Linux, FreeBSD et OpenBSD.

Mais à quel point MySQL est-il lent par rapport à PostgreSQL ?

Ou plutôt, à quel point PostgreSQL est-il plus rapide que MySQL ?

Comment ai-je comparé les bases de données ?

  1. Quelle base de données a les écritures les plus rapides
  2. Quelle base de données a les lectures les plus rapides
  3. Quelle base de données a le moins de mémoire et d'utilisation du processeur

Préparation

PostgreSQL

docker run --name postgres -e POSTGRES_PASSWORD=mot de passe -p 5433:5432 -v postgres_data:/var/lib/postgresql/data -d postgres:alpine

BD d'échelle de temps

docker run --name timescale -e POSTGRES_PASSWORD=mot de passe -p 5434:5432 -v timescale_data:/var/lib/postgresql/data -d timescale/timescaledb:latest-pg12

MySQL

docker run --name mysql -e MYSQL_ROOT_PASSWORD=mot de passe -p 3306:3306 -v mysql_data:/var/lib/mysql -d mysql:latest

MariaDB

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=mot de passe -p 3307:3306 -v mariadb_data:/var/lib/mysql -d mariadb:latest

Serveur Percona

docker run --name percona -e MYSQL_ROOT_PASSWORD=mot de passe -p 3308:3306 -v percona_data:/var/lib/mysql -d percona:ps-8

Première comparaison

D'après ces résultats, il apparaît que PostgreSQL est le gagnant et SQL Server le perdant. Mais nous n'avons pas encore fait de tests de lecture et/ou d'écriture.

Rédaction de repères.

Écrire des benchmarks de SGBD SQL

Repères de lecture.

Lire les benchmarks du SGBD SQL

La famille de moteurs Postgres est environ deux fois plus rapide que la famille de moteurs MySQL.

Pourquoi MySQL est-il plus utilisé et populaire que PostgreSQL ?

MySQL est l'un des systèmes de gestion de bases de données les plus populaires au monde, bien que ses performances ne soient pas comparables à d'autres bases de données telles que PostgreSQL. Il y a plusieurs raisons pour lesquelles MySQL est plus populaire que PostgreSQL, malgré les performances supérieures de ce dernier.

En premier lieu, MySQL a une histoire plus longue que PostgreSQL et a donc eu plus de temps pour se répandre et devenir populaire. MySQL est sorti pour la première fois en 1995, tandis que PostgreSQL est sorti en 1996. Cela signifie que MySQL avait un an de plus pour se répandre et se faire connaître des programmeurs et des professionnels de l'industrie.

De plus, MySQL est souvent inclus comme composant par défaut dans de nombreux systèmes d'exploitation et piles de développement, ce qui le rend facilement accessible à quiconque a besoin d'une base de données. De plus, MySQL dispose d'une documentation très complète et d'une forte présence en ligne, ce qui le rend facile à apprendre et à utiliser pour les programmeurs novices.

Enfin, MySQL est souvent choisi par les entreprises en raison de sa simplicité et de sa capacité à traiter de grandes quantités de données. MySQL ne nécessite pas de connaissances avancées en administration système et peut facilement gérer de grandes quantités de données, ce qui le rend idéal pour les entreprises qui ont besoin d'une base de données évolutive et facile à gérer.

Impact environnemental de PostgreSQL par rapport à MySQL.

L'utilisation de PostgreSQL au lieu de MySQL pourrait avoir un impact positif sur l'environnement. PostgreSQL est connu pour son efficacité et sa rapidité, ce qui signifie qu'il peut gérer de grandes quantités de données avec moins de consommation de ressources que MySQL. Cela peut entraîner une réduction des émissions de CO2, car les serveurs utiliseront moins d'énergie pour effectuer les mêmes tâches.

L'utilisation de PostgreSQL plutôt que MySQL pourrait signifier, par exemple, réduire le nombre de serveurs au sein d'une organisation, éviter l'utilisation de clusters MySQL pour compenser les problèmes de performances, ainsi qu'éviter un remplacement ou une mise à niveau du matériel à la fois pour la mise à l'échelle verticale (augmentation des ressources sur une seule machine), et pour la mise à l'échelle horizontale, c'est-à-dire l'augmentation des nœuds et des machines.

Conclusions.

Nous avons vu comment, sur la base des benchmarks mentionnés ci-dessus, PostgreSQL est décidément meilleur et plus recommandé pour une série d'avantages à la fois en termes de performances et de vitesse et dans l'utilisation plus efficace de la mémoire, sans avoir à renoncer à l'open source ou à un système de licence libre qui permet de l'adopter sans restriction sur les logiciels et applications libres.

On se demande donc pourquoi et pourquoi de nombreuses réalités, y compris les CMS les plus utilisés tels que WordPress, Prestashop, Magento, Joomla, ont décidé de continuer à utiliser un SGBD tel que MySQL et dérivés qui en fait n'a pas ce calibre et ces exigences telles que make il est agréable au goût par rapport à l'homologue PostgreSQL.

De nombreuses considérations concernant l'efficacité du logiciel ainsi que l'impact sur la consommation et sur l'environnement reviendraient si l'on considère ce raisonnement appliqué à grande échelle, permettant par exemple de réduire le nombre de nœuds dans un cluster ou d'éviter dans certains cas de mise à l'échelle horizontale ou verticale pour remédier à l'inefficacité de la base de données.

Cependant, à l'exception de quelques projets sporadiques plutôt immatures à utiliser en production avec les garanties nécessaires, il ne semble toujours pas y avoir d'avenir pour que PostgreSQL soit utilisé comme backend pour les CMS les plus populaires mentionnés ci-dessus.

Vraiment dommage quand on sait que le degré de maturité de PostgreSQL est si élevé qu'il n'a pratiquement pas de rival (sauf peut-être Oracle DB).

 

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

INFORMATIONS

Managed Server Srl est un acteur italien leader dans la fourniture de solutions système GNU/Linux avancées orientées vers la haute performance. Avec un modèle d'abonnement peu coûteux et prévisible, nous garantissons que nos clients ont accès à des technologies avancées en matière d'hébergement, de serveurs dédiés et de services cloud. En plus de cela, nous proposons des conseils système sur les systèmes Linux et une maintenance spécialisée en SGBD, sécurité informatique, Cloud et bien plus encore. Nous nous distinguons par notre expertise dans l'hébergement de CMS Open Source de premier plan tels que WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart et Magento, soutenus par un service d'assistance et de conseil de haut niveau adapté aux administrations publiques, aux PME et à toutes tailles.

Red Hat, Inc. détient les droits de Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale d'AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la FreeBSD Foundation ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt. Oracle Corporation détient les droits sur Oracle®, MySQL® et MyRocks® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; REDIS® est une marque déposée de Redis Labs Ltd. F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB. Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited. Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal®. Amazon Web Services, Inc. détient les droits sur AWS® ; Google LLC détient les droits sur Google Cloud™ et Chrome™ ; Facebook, Inc. détient les droits sur Facebook® ; Microsoft Corporation détient les droits sur Microsoft®, Azure® et Internet Explorer® ; La Fondation Mozilla détient les droits sur Firefox®. Apache® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée du groupe PHP. CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV. Ce site n'est affilié, sponsorisé ou autrement associé à aucune des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées appartiennent à leurs titulaires. MANAGED SERVER® est une marque déposée au niveau européen par MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italie.

JUSTE UN MOMENT !

Souhaitez-vous voir comment votre WooCommerce fonctionne sur nos systèmes sans avoir à migrer quoi que ce soit ? 

Entrez l'adresse de votre site WooCommerce et vous obtiendrez une démonstration navigable, sans avoir à faire absolument quoi que ce soit et entièrement gratuite.

Non merci, mes clients préfèrent le site lent.
Retour en haut de page