Maison > Article > base de données > Quelle est la différence entre postgresql et mysql
Différences : 1. MySQL démarre une instance en exécutant une commande, tandis que PG est démarré en exécutant un processus ; 2. PG prend en charge les vues matérialisées, mais MySQL ne prend pas en charge les vues matérialisées. 3. MySQL ne prend pas en charge l'évolutivité, alors que PG l'est ; hautement évolutif ; 4. La prise en charge des fonctions des procédures stockées PG est meilleure que celle de MySQL, et il a la capacité de mettre en cache les plans d'exécution localement.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
MySQL
MySQL est relativement jeune, apparu pour la première fois en 1994. Elle prétend être la base de données open source la plus populaire. MySQL est le M de LAMP (un progiciel de développement Web comprenant Linux, Apache et Perl/PHP/Python). La plupart des applications construites sur la pile LAMP utilisent MySQL, y compris des applications bien connues telles que WordPress, Drupal, Zend et phpBB.
Dès le début, MySQL a été conçu pour être un backend de serveur Web rapide, utilisant la méthode d'accès séquentiel d'indexation rapide (ISAM) et ne prenant pas en charge ACID. Après un développement précoce rapide, MySQL a commencé à prendre en charge davantage de moteurs de stockage et a implémenté ACID via le moteur InnoDB. MySQL prend également en charge d'autres moteurs de stockage, fournit des fonctions de table temporaires (en utilisant le moteur de stockage MEMORY) et implémente des bases de données de lecture à grande vitesse via le moteur MyISAM. De plus, il existe d'autres moteurs de stockage de base et des moteurs tiers.
MySQL dispose d'une documentation très riche, comprenant de nombreux manuels de référence gratuits de haute qualité, des livres et des documents en ligne, ainsi qu'une formation et une assistance d'Oracle et de fournisseurs tiers.
MySQL a connu des changements de propriétaires et des événements assez dramatiques ces dernières années. Il a été initialement développé par MySQL AB, puis vendu à Sun pour 1 milliard de dollars en 2008. Sun a été racheté par Oracle en 2010. Oracle prend en charge plusieurs versions de MySQL : Standard, Enterprise, Classic, Cluster, Embedded et Community. Certains d’entre eux sont téléchargeables gratuitement, tandis que d’autres sont payants. Son code principal est basé sur la licence GPL, et des licences commerciales sont disponibles pour les développeurs et fabricants qui ne souhaitent pas utiliser la licence GPL.
Maintenant, il existe beaucoup plus de bases de données parmi lesquelles choisir en fonction du code MySQL d'origine, car plusieurs développeurs principaux de MySQL ont publié des forks MySQL. L'un des créateurs originaux de MySQL, Michael "Monty" Widenius, semblait regretter d'avoir vendu MySQL à Sun. Il a donc développé son propre fork MySQL, MariaDB, qui est gratuit et sous licence GPL. Drizzle, une branche créée par le célèbre développeur MySQL Brian Aker, a été largement réécrite, spécialement optimisée pour les applications multi-CPU, cloud, réseau et haute concurrence.
PostgreSQL
PostgreSQL (PG en abrégé) se présente comme la base de données open source la plus avancée au monde. Certains fans de PostgreSQL disent que c'est comparable à Oracle, mais sans le prix élevé et le service client arrogant. Elle a une longue histoire, développée à l’origine à l’Université de Californie à Berkeley en 1985 pour succéder à la base de données Ingres.
PostgreSQL est un projet open source entièrement communautaire et maintenu par plus de 1 000 contributeurs à travers le monde. Il fournit une seule version entièrement fonctionnelle, contrairement à MySQL qui propose plusieurs éditions communautaires, éditions commerciales et éditions d'entreprise différentes. PostgreSQL est sous licence libérale BSD/MIT, et les organisations peuvent utiliser, copier, modifier et redistribuer le code à condition de fournir un avis de droit d'auteur.
La fiabilité est la priorité absolue de PostgreSQL. Il est connu pour sa qualité à toute épreuve et son ingénierie solide, prenant en charge des applications critiques à transactions élevées. La documentation de PostgreSQL est très bonne, avec un grand nombre de manuels en ligne gratuits et des manuels de référence archivés pour les anciennes versions. Le support communautaire de PostgreSQL est excellent, tout comme le support commercial de fournisseurs indépendants.
La cohérence et l'intégrité des données sont également des fonctionnalités hautement prioritaires de PostgreSQL. PostgreSQL prend entièrement en charge les fonctionnalités ACID, offre de solides garanties de sécurité pour l'accès aux bases de données et utilise pleinement les outils de sécurité d'entreprise, tels que Kerberos et OpenSSL. Vous pouvez définir vos propres contrôles pour garantir la qualité des données en fonction de vos propres règles métier.
Parmi les nombreuses fonctionnalités de gestion, la récupération à un moment précis (PITR) est une fonctionnalité intéressante. Il s'agit d'une fonctionnalité flexible de haute disponibilité qui offre la possibilité de créer des sauvegardes à chaud, des instantanés et des restaurations en cas d'échec de la récupération. Mais ce n'est pas tout PostgreSQL. Le projet fournit également plusieurs méthodes pour gérer PostgreSQL afin d'obtenir une haute disponibilité, un équilibrage de charge, une réplication, etc., afin que vous puissiez utiliser les fonctions adaptées à vos besoins spécifiques.
La différence entre postgresql et mysql
Fonctionnalités | MySQL | PostgreSQL |
Instance | Démarrez l'instance en exécutant la commande MySQL (mysqld ). Une instance peut gérer une ou plusieurs bases de données. Un serveur peut exécuter plusieurs instances de mysqld. Un gestionnaire d'instances peut surveiller des instances individuelles de mysqld. |
Démarrez l'instance en exécutant le processus Postmaster (pg_ctl). Une instance peut gérer une ou plusieurs bases de données, qui forment un cluster. Un cluster est une zone du disque initialisée lors de l'installation et constituée d'un répertoire dans lequel toutes les données sont stockées. Utilisez initdb pour créer la première base de données. Plusieurs instances peuvent être démarrées sur une seule machine. |
Base de données | Une base de données est une collection nommée d'objets qui est une entité distincte des autres bases de données de l'instance. Toutes les bases de données d'une instance MySQL partagent le même catalogue système. | Une base de données est une collection nommée d'objets, et chaque base de données est une entité distincte des autres bases de données. Chaque base de données possède son propre catalogue système, mais toutes les bases de données partagent pg_databases. |
Data buffer | Définissez le tampon de données via le paramètre de configuration innodb_buffer_pool_size. Ce paramètre est le nombre d'octets dans la mémoire tampon qu'InnoDB utilise pour mettre en cache les données de table et les index. Sur un serveur de base de données dédié, ce paramètre peut être paramétré jusqu'à 80% de la mémoire physique de la machine. | Shared_buffersCache. Par défaut, 64 tampons sont alloués. La taille de bloc par défaut est de 8K. Le cache de tampon peut être mis à jour en définissant le paramètre shared_buffers dans le fichier postgresql.conf. |
Connexion à la base de données | Le client utilise l'instruction CONNECT ou USE pour se connecter à la base de données. À ce stade, le nom de la base de données doit être spécifié, et l'identifiant utilisateur et le mot de passe peuvent également être spécifiés. Utilisez des rôles pour gérer les utilisateurs et les groupes d'utilisateurs dans la base de données. | Le client utilise l'instruction connect pour se connecter à la base de données. À ce stade, le nom de la base de données doit être spécifié, et l'identifiant utilisateur et le mot de passe peuvent également être spécifiés. Utilisez des rôles pour gérer les utilisateurs et les groupes d'utilisateurs dans la base de données. |
Authentification | MySQL gère l'authentification au niveau de la base de données. Fondamentalement, seule l'authentification par mot de passe est prise en charge. | PostgreSQL prend en charge une variété de méthodes d'authentification : authentification de confiance, authentification par mot de passe, authentification Kerberos, authentification basée sur l'identité, authentification LDAP, authentification PAM |
Cryptage | Vous pouvez spécifier un mot de passe à la table niveau pour authentifier les données Chiffrer. Vous pouvez également utiliser les fonctions AES_ENCRYPT et AES_DECRYPT pour chiffrer et déchiffrer les données des colonnes. Le cryptage du réseau peut être réalisé via des connexions SSL. | Les colonnes peuvent être cryptées/déchiffrées à l'aide des fonctions de la bibliothèque pgcrypto. Le cryptage du réseau peut être réalisé via des connexions SSL. |
Audit | peut récupérer le journal des requêtes. | Vous pouvez utiliser des déclencheurs PL/pgSQL sur les tables pour l'audit. |
Sauvegarde, récupération et journalisation | InnoDB utilise la journalisation en écriture anticipée. Prend en charge la sauvegarde complète en ligne et hors ligne ainsi que la récupération en cas de crash et de transaction. Un logiciel tiers est requis pour prendre en charge la sauvegarde à chaud. | Conservez un journal d'écriture anticipée dans un sous-répertoire du répertoire de données. Prend en charge les sauvegardes complètes en ligne et hors ligne ainsi que la récupération en cas de crash, de point dans le temps et de transaction. Peut prendre en charge la sauvegarde à chaud. |
Constraints | prend en charge les contraintes de clé primaire, de clé étrangère, uniques et non nulles. Les contraintes de vérification sont résolues mais non appliquées. | Prend en charge les clés primaires, les clés étrangères, les contraintes uniques, non nulles et de vérification. |
Les procédures stockées et les fonctions définies par l'utilisateur | prennent en charge les instructions CREATE PROCEDURE et CREATE FUNCTION. Les procédures stockées peuvent être écrites en SQL et C++. Les fonctions définies par l'utilisateur peuvent être écrites en SQL, C et C++. | Il n'y a pas de procédure stockée séparée, tout est implémenté via des fonctions. Les fonctions définies par l'utilisateur peuvent être écrites en PL/pgSQL (un langage procédural spécialisé), PL/Tcl, PL/Perl, PL/Python, SQL et C. |
Trigger | prend en charge les déclencheurs pré-ligne, les déclencheurs post-ligne et les déclencheurs d'instructions. Les instructions de déclenchement sont écrites dans des instructions composées en langage procédural. | Prend en charge les déclencheurs pré-ligne, les déclencheurs post-ligne et les déclencheurs d'instructions, et le processus de déclenchement est écrit en C. |
Fichier de configuration système | my.conf | Postgresql.conf |
Configuration de la base de données | my.conf | Postgresql.conf |
Fichier de connexion client | my.conf | pg_hba.conf |
Support XML | Support XML limité. | Support XML limité. "Serveur d'accès et de gestion des données" mysql——Outil de ligne de commande |
Vacuum——Récupérer l'espace inutilisé Analyser ——Mettre à jour l'optimiseur de requêtes utilisé Statistiques de psql - Outil de ligne de commande pgAdmin - Outil GUI client |
Contrôle de la concurrence prend en charge les verrous au niveau de la table et de la ligne. Le moteur de stockage InnoDB prend en charge READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ et SERIALIZABLE. Définissez le niveau d'isolement au niveau de la transaction à l'aide de l'instruction SET TRANSACTION ISOLATION LEVEL. Prend en charge les verrous au niveau de la table et de la ligne. Les niveaux d'isolement ANSI pris en charge sont Lecture validée (par défaut : vous pouvez voir un instantané de la base de données lorsque la requête est démarrée) et Sérialisation (similaire à Lecture répétable : vous ne pouvez voir que les résultats validés avant le démarrage de la transaction). Utilisez l'instruction SET TRANSACTION pour définir le niveau d'isolement au niveau de la transaction. Définissez au niveau de la session à l'aide de SET SESSION. |
VS | PostgreSQL | MySQL |
---|---|---|
Open Source | PostgreSQL est un système open source gratuit, régi par la licence PostgreSQL (Free Open Source License). | MySQL est un produit d'Oracle et propose plusieurs versions payantes aux utilisateurs |
Gestion | PostgreSQL est un produit développé par des utilisateurs du monde entier | MySQL est un produit sous licence publique générale GNU et sous divers accords de propriété termes |
Performance | PostgreSQL convient à une utilisation dans de grands systèmes nécessitant des vitesses de lecture et d'écriture élevées | MySQL est principalement utilisé pour les applications Web qui ne nécessitent qu'une base de données pour les transactions de données. |
Conforme à l'ACID | PostgreSQL suit les principes ACID du début à la fin et garantit que les exigences sont respectées | MySQL est conforme à l'ACID uniquement lors de l'utilisation des moteurs de stockage de cluster InnoDB et NDB. |
Compatibilité SQL | « D'après la documentation, PostgreSQL est compatible avec la plupart des SQL. PostgreSQL prend en charge la plupart des fonctionnalités de SQL : 2011. Sur les 179 fonctionnalités obligatoires requises pour la cohérence de base, PostgreSQL est compatible avec au moins 160. sont une série de fonctionnalités optionnelles prises en charge. "D'après la documentation, MySQL est partiellement compatible avec SQL. L'un de nos principaux objectifs pour ce produit est de continuer à travailler dur pour répondre aux exigences de la norme SQL. Mais sans sacrifier la vitesse ou la fiabilité. Nous pourrions ajouter des extensions SQL ou la prise en charge de fonctionnalités non SQL si cela améliore considérablement la disponibilité du serveur MySQL pour une grande partie de notre base d'utilisateurs | |
Il peut fonctionner sous Linux, Windows (Win2000 SP4 et supérieur ), FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, IRIX, Solaris et Tu64. Il prend également en charge le système d'exploitation HP-UX développé par le géant de la technologie HP, ainsi que le système d'exploitation Unix open source. | MySQL peut fonctionner sur Oracle Solaris, Microsoft Windows, Linux Mac OS X. MySQL étend la prise en charge du système d'exploitation open source FreeBSD | |
PostgreSQL est écrit en langage C et prend en charge plusieurs langages de programmation, les plus importants C/C++, Delphi, JavaScript, Java, Python, R, Tcl, Go , Lisp, Erlang et .Net. | PostgreSQL est écrit en C et C++ et prend en charge C/C++, Erlang, PHP, Lisp et Go, Perl, Java, Delphi, R et Node.js | . |
PostgreSQL prend en charge les vues matérialisées | MySQL ne prend pas en charge les vues matérialisées | |
PostgreSQL prend en charge la réplication primaire et secondaire, et peut également gérer d'autres types de réplication en implémentant des extensions tierces | Prise en charge de MySQL réplication maître-veille, où chaque nœud est le nœud maître et a le droit de mettre à jour les données | |
PostgreSQL est hautement évolutif, vous pouvez ajouter et posséder des types de données, des opérateurs, des types d'index et un langage de fonctions. | MySQL ne prend pas en charge l'évolutivité. | |
PostgreSQL prend en charge toutes les normes. | MySQL prend en charge toutes les normes. | |
PostgreSQL dispose d'un support communautaire actif qui aide à améliorer les fonctionnalités existantes, et ses committers créatifs travaillent dur pour garantir que la base de données reste à la pointe de la technologie avec les dernières fonctionnalités et une base de données de sécurité maximale. | MySQL compte également une large communauté de followers, et ces contributeurs de la communauté, surtout après avoir été acquis par Oracle, se concentrent principalement sur quelques nouvelles fonctionnalités occasionnelles et maintiennent les fonctionnalités existantes. | |
PostgreSQL fournit une prise en charge SSL native pour les connexions afin de crypter les communications client/serveur. PSQL dispose également d'une sécurité au niveau des lignes. | MySQL est hautement sécurisé et comprend plusieurs fonctionnalités de sécurité. |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!