Unterschiede: 1. MySQL startet eine Instanz durch die Ausführung eines Befehls, während PG durch die Ausführung eines Prozesses gestartet wird. 2. PG unterstützt materialisierte Ansichten, MySQL jedoch nicht. 3. MySQL unterstützt keine Skalierbarkeit hoch skalierbar 4. Die funktionale Unterstützung gespeicherter PG-Prozeduren ist besser als die von MySQL und es besteht die Möglichkeit, Ausführungspläne lokal zwischenzuspeichern.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
MySQL
MySQL ist relativ jung und erschien erstmals 1994. Sie behauptet, die beliebteste Open-Source-Datenbank zu sein. MySQL ist das M in LAMP (ein Softwarepaket für die Webentwicklung, einschließlich Linux, Apache und Perl/PHP/Python). Die meisten auf dem LAMP-Stack aufgebauten Anwendungen verwenden MySQL, darunter bekannte Anwendungen wie WordPress, Drupal, Zend und phpBB.
MySQL war von Anfang an als schnelles Webserver-Backend konzipiert, das die schnelle Index Sequential Access Method (ISAM) nutzt und ACID nicht unterstützt. Nach einer schnellen frühen Entwicklung begann MySQL, mehr Speicher-Engines zu unterstützen und implementierte ACID über die InnoDB-Engine. MySQL unterstützt auch andere Speicher-Engines, bietet temporäre Tabellenfunktionen (unter Verwendung der MEMORY-Speicher-Engine) und implementiert Hochgeschwindigkeits-Lesedatenbanken über die MyISAM-Engine. Darüber hinaus gibt es andere Kernspeicher-Engines und Engines von Drittanbietern.
MySQL verfügt über eine sehr umfangreiche Dokumentation, darunter viele hochwertige kostenlose Referenzhandbücher, Bücher und Online-Dokumente sowie Schulungen und Support von Oracle und Drittanbietern.
MySQL hat in den letzten Jahren Eigentümerwechsel und einige ziemlich dramatische Ereignisse erlebt. Es wurde ursprünglich von MySQL AB entwickelt und dann 2008 für 1 Milliarde US-Dollar an Sun verkauft. Sun wurde 2010 von Oracle übernommen. Oracle unterstützt mehrere Versionen von MySQL: Standard, Enterprise, Classic, Cluster, Embedded und Community. Einige davon können kostenlos heruntergeladen werden, während andere kostenpflichtig sind. Sein Kerncode basiert auf der GPL-Lizenz. Für Entwickler und Hersteller, die die GPL-Lizenz nicht nutzen möchten, stehen kommerzielle Lizenzen zur Verfügung.
Jetzt stehen viel mehr Datenbanken zur Auswahl, die auf dem ursprünglichen MySQL-Code basieren, da mehrere wichtige MySQL-Entwickler MySQL-Forks veröffentlicht haben. Einer der ursprünglichen MySQL-Entwickler, Michael „Monty“ Widenius, schien den Verkauf von MySQL an Sun zu bereuen, also entwickelte er seinen eigenen MySQL-Fork, MariaDB, der kostenlos ist und unter der GPL lizenziert ist. Drizzle, ein Fork des bekannten MySQL-Entwicklers Brian Aker, wurde umfassend neu geschrieben und insbesondere für Multi-CPU-, Cloud- und Netzwerkanwendungen sowie hohe Parallelität optimiert.
PostgreSQL
PostgreSQL (kurz PG) bezeichnet sich selbst als die fortschrittlichste Open-Source-Datenbank der Welt. Einige Fans von PostgreSQL sagen, es sei mit Oracle vergleichbar, allerdings ohne den hohen Preis und den arroganten Kundenservice. Sie hat eine lange Geschichte und wurde ursprünglich 1985 an der University of California, Berkeley, als Nachfolger der Ingres-Datenbank entwickelt.
PostgreSQL ist ein vollständig von der Community betriebenes Open-Source-Projekt, das von mehr als 1.000 Mitwirkenden auf der ganzen Welt gepflegt wird. Es bietet eine einzige voll funktionsfähige Version, im Gegensatz zu MySQL, das mehrere verschiedene Community-Editionen, kommerzielle Editionen und Enterprise-Editionen bereitstellt. PostgreSQL ist unter der liberalen BSD/MIT-Lizenz lizenziert und Organisationen können den Code verwenden, kopieren, ändern und weiterverbreiten, sofern sie einen Urheberrechtshinweis angeben.
Zuverlässigkeit hat für PostgreSQL höchste Priorität. Es ist bekannt für seine solide Qualität und solide Technik und unterstützt geschäftskritische Anwendungen mit hoher Transaktionsfrequenz. Die Dokumentation von PostgreSQL ist sehr gut, mit einer großen Anzahl kostenloser Online-Handbücher und archivierten Referenzhandbüchern für ältere Versionen. Der Community-Support von PostgreSQL ist ausgezeichnet, ebenso wie der kommerzielle Support von unabhängigen Anbietern.
Datenkonsistenz und -integrität sind ebenfalls wichtige Funktionen von PostgreSQL. PostgreSQL unterstützt ACID-Funktionen vollständig, bietet starke Sicherheitsgarantien für den Datenbankzugriff und nutzt Unternehmenssicherheitstools wie Kerberos und OpenSSL in vollem Umfang. Sie können Ihre eigenen Prüfungen definieren, um die Datenqualität basierend auf Ihren eigenen Geschäftsregeln sicherzustellen.
Unter den vielen Verwaltungsfunktionen ist die Point-in-Time-Wiederherstellung (PITR) eine großartige Funktion. Dabei handelt es sich um eine flexible Hochverfügbarkeitsfunktion, die die Möglichkeit bietet, Hot-Backups und Snapshots sowie Wiederherstellungen für fehlgeschlagene Wiederherstellungen zu erstellen. Aber das ist nicht alles von PostgreSQL. Das Projekt bietet auch mehrere Methoden zur Verwaltung von PostgreSQL, um Hochverfügbarkeit, Lastausgleich, Replikation usw. zu erreichen, sodass Sie die Funktionen verwenden können, die Ihren spezifischen Anforderungen entsprechen.
Der Unterschied zwischen Postgresql und MySQL
Funktionen | MySQL | PostgreSQL |
Instanz | Starten Sie die Instanz, indem Sie den MySQL-Befehl (mysqld) ausführen. Eine Instanz kann eine oder mehrere Datenbanken verwalten. Ein Server kann mehrere mysqld-Instanzen ausführen. Ein Instanzmanager kann einzelne Instanzen von mysqld überwachen. |
Starten Sie die Instanz, indem Sie den Postmaster-Prozess (pg_ctl) ausführen. Eine Instanz kann eine oder mehrere Datenbanken verwalten, die einen Cluster bilden. Ein Cluster ist ein Bereich auf der Festplatte, der während der Installation initialisiert wird und aus einem Verzeichnis besteht, in dem alle Daten gespeichert werden. Verwenden Sie initdb, um die erste Datenbank zu erstellen. Auf einer Maschine können mehrere Instanzen gestartet werden. |
Datenbank | Eine Datenbank ist eine benannte Sammlung von Objekten, die eine von anderen Datenbanken in der Instanz getrennte Einheit darstellt. Alle Datenbanken in einer MySQL-Instanz nutzen denselben Systemkatalog. | Eine Datenbank ist eine benannte Sammlung von Objekten, und jede Datenbank ist eine von anderen Datenbanken getrennte Einheit. Jede Datenbank verfügt über einen eigenen Systemkatalog, aber alle Datenbanken nutzen pg_databases gemeinsam. |
Datenpuffer | Stellen Sie den Datenpuffer über den Konfigurationsparameter innodb_buffer_pool_size ein. Dieser Parameter ist die Anzahl der Bytes im Speicherpuffer, die InnoDB zum Zwischenspeichern von Tabellendaten und Indizes verwendet. Auf einem dedizierten Datenbankserver kann dieser Parameter auf bis zu 80 % des physischen Speichers der Maschine eingestellt werden. | Shared_buffers Cache. Standardmäßig sind 64 Puffer zugewiesen. Die Standardblockgröße beträgt 8 KB. Der Puffercache kann durch Festlegen des Parameters shared_buffers in der Datei postgresql.conf aktualisiert werden. |
Datenbankverbindung | Der Client verwendet die CONNECT- oder USE-Anweisung, um eine Verbindung zur Datenbank herzustellen. Zu diesem Zeitpunkt muss der Datenbankname angegeben werden. Außerdem können die Benutzer-ID und das Kennwort angegeben werden. Verwenden Sie Rollen, um Benutzer und Benutzergruppen in der Datenbank zu verwalten. | Der Client verwendet die Connect-Anweisung, um eine Verbindung zur Datenbank herzustellen. Zu diesem Zeitpunkt muss der Datenbankname angegeben werden. Außerdem können die Benutzer-ID und das Kennwort angegeben werden. Verwenden Sie Rollen, um Benutzer und Benutzergruppen in der Datenbank zu verwalten. |
Authentifizierung | MySQL verwaltet die Authentifizierung auf Datenbankebene. Grundsätzlich wird nur die Passwortauthentifizierung unterstützt. | PostgreSQL unterstützt eine Vielzahl von Authentifizierungsmethoden: Vertrauensauthentifizierung, Passwortauthentifizierung, Kerberos-Authentifizierung, identbasierte Authentifizierung, LDAP-Authentifizierung, PAM-Authentifizierung |
Verschlüsselung | Sie können am Tisch ein Passwort festlegen Ebene zur Authentifizierung von Daten. Verschlüsseln. Sie können auch die Funktionen AES_ENCRYPT und AES_DECRYPT verwenden, um Spaltendaten zu verschlüsseln und zu entschlüsseln. Die Netzwerkverschlüsselung kann über SSL-Verbindungen erreicht werden. | Spalten können mithilfe von Funktionen in der pgcrypto-Bibliothek verschlüsselt/entschlüsselt werden. Die Netzwerkverschlüsselung kann über SSL-Verbindungen erreicht werden. |
Audit | kann das Abfrageprotokoll durchsuchen. | Sie können PL/pgSQL-Trigger für Tabellen zur Überwachung verwenden. |
Sicherung, Wiederherstellung und Protokollierung | InnoDB verwendet die Write-Ahead-Protokollierung. Unterstützt Online- und Offline-Vollsicherung sowie Absturz- und Transaktionswiederherstellung. Zur Unterstützung von Hot-Backups ist Software von Drittanbietern erforderlich. | Führen Sie ein Write-Ahead-Protokoll in einem Unterverzeichnis des Datenverzeichnisses. Unterstützt Online- und Offline-Vollsicherungen sowie Absturz-, Point-in-Time- und Transaktionswiederherstellung. Kann Hot-Backup unterstützen. |
Einschränkungen | unterstützt Primärschlüssel-, Fremdschlüssel-, eindeutige und Nicht-Null-Einschränkungen. Prüfeinschränkungen werden aufgelöst, aber nicht erzwungen. | Unterstützt Primärschlüssel, Fremdschlüssel, eindeutige, Nicht-Null- und Prüfeinschränkungen. |
Gespeicherte Prozeduren und benutzerdefinierte Funktionen | unterstützen CREATE PROCEDURE- und CREATE FUNCTION-Anweisungen. Gespeicherte Prozeduren können in SQL und C++ geschrieben werden. Benutzerdefinierte Funktionen können in SQL, C und C++ geschrieben werden. | Es gibt keine separate gespeicherte Prozedur, alles wird durch Funktionen implementiert. Benutzerdefinierte Funktionen können in PL/pgSQL (einer speziellen prozeduralen Sprache), PL/Tcl, PL/Perl, PL/Python, SQL und C geschrieben werden. |
Trigger | unterstützt Pre-Row-Trigger, Post-Row-Trigger und Statement-Trigger, die in prozeduralen zusammengesetzten Anweisungen geschrieben werden. | Unterstützt Pre-Row-Trigger, Post-Row-Trigger und Statement-Trigger. Der Triggerprozess ist in C geschrieben. |
Systemkonfigurationsdatei | my.conf | Postgresql.conf |
Datenbankkonfiguration | my.conf | Postgresql.conf |
Client-Verbindungsdatei | my.conf | pg_hba.conf |
XML-Unterstützung | Eingeschränkte XML-Unterstützung. | Eingeschränkte XML-Unterstützung. |
Datenzugriffs- und Verwaltungsserver | TABELLE OPTIMIEREN - Gewinnen Sie ungenutzten Speicherplatz zurück und beseitigen Sie die Fragmentierung von Datendateien myisamchk -analyze - Aktualisieren Sie die vom Abfrageoptimierer (MyISAM-Speicher-Engine) verwendeten Statistiken MySQL – Befehlszeilentool MySQL-Administrator – Client-GUI-Tool |
Vacuum – Freigeben von ungenutztem Speicherplatz Analysieren – Aktualisieren des verwendeten Abfrageoptimierers Statistiken von psql – Befehlszeilentool pgAdmin – Client-GUI-Tool |
Parallelitätskontrolle | unterstützt Sperren auf Tabellen- und Zeilenebene. Die InnoDB-Speicher-Engine unterstützt READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ und SERIALIZABLE. Legen Sie die Isolationsstufe auf Transaktionsebene mit der Anweisung SET TRANSACTION ISOLATION LEVEL fest. |
Unterstützt Sperren auf Tabellen- und Zeilenebene. Die unterstützten ANSI-Isolationsstufen sind Read Committed (Standard – Sie können einen Snapshot der Datenbank sehen, wenn die Abfrage gestartet wird) und Serialization (ähnlich zu Repeatable Read – Sie können nur die Ergebnisse sehen, die vor dem Start der Transaktion festgeschrieben wurden). Verwenden Sie die SET TRANSACTION-Anweisung, um die Isolationsstufe auf Transaktionsebene festzulegen. Auf Sitzungsebene mit SET SESSION festlegen. |
VS | PostgreSQL | MySQL |
---|---|---|
Open Source | PostgreSQL ist ein kostenloses Open-Source-System, das der PostgreSQL-Lizenz (Free Open Source License) unterliegt. | MySQL ist ein Produkt von Oracle und stellt Benutzern mehrere kostenpflichtige Versionen zur Verfügung. |
Management | PostgreSQL ist ein Produkt, das von Benutzern auf der ganzen Welt entwickelt wurde. | MySQL ist ein Produkt unter der GNU General Public License und verschiedenen proprietären Vereinbarungen Begriffe |
Leistung | PostgreSQL eignet sich für den Einsatz in großen Systemen, die hohe Lese- und Schreibgeschwindigkeiten erfordern. | MySQL wird hauptsächlich für Webanwendungen verwendet, die nur eine Datenbank für Datentransaktionen benötigen. |
ACID folgen | PostgreSQL befolgt die ACID-Prinzipien von Anfang bis Ende und stellt sicher, dass die Anforderungen erfüllt werden. | MySQL ist nur ACID-kompatibel, wenn die Cluster-Speicher-Engines InnoDB und NDB verwendet werden. |
SQL-Kompatibilität | „Aus der Dokumentation geht hervor, dass PostgreSQL mit den meisten SQL:2011-Funktionen kompatibel ist. Darüber hinaus ist PostgreSQL mit mindestens 160 kompatibel sind eine Reihe unterstützter optionaler Funktionen. „Aus der Dokumentation geht hervor, dass MySQL teilweise mit SQL kompatibel ist. Eines unserer Hauptziele für dieses Produkt ist es, weiterhin hart daran zu arbeiten, die Anforderungen des SQL-Standards zu erfüllen. Aber ohne Einbußen bei Geschwindigkeit oder Zuverlässigkeit.“ Wir könnten SQL-Erweiterungen oder Unterstützung für Nicht-SQL-Funktionen hinzufügen, wenn dies die Verfügbarkeit des MySQL-Servers für einen großen Teil unserer Benutzerbasis erheblich verbessern würde. | |
Es kann unter Linux, Windows (Win2000 SP4 und höher) ausgeführt werden ), FreeBSD, OpenBSD, NetBSD, Mac OS | MySQL kann auf Oracle Solaris, Microsoft Windows und Linux Mac OS X ausgeführt werden. MySQL erweitert die Unterstützung für das Open-Source-Betriebssystem FreeBSD | |
PostgreSQL ist in der Sprache C geschrieben und unterstützt mehrere Programmiersprachen, die bekanntesten C/C++, Delphi, JavaScript, Java, Python, R, Tcl, Go , Lisp, Erlang und .Net. | PostgreSQL ist in C und C++ geschrieben und unterstützt C/C++, Erlang, PHP, Lisp und Go, Perl, Java, Delphi, R und Node.js | |
PostgreSQL unterstützt materialisierte Ansichten. | MySQL unterstützt keine materialisierten Ansichten Master-Standby-Replikation, bei der jeder Knoten der Masterknoten ist und das Recht hat, Daten zu aktualisieren | |
PostgreSQL ist hoch skalierbar, Sie können Datentypen, Operatoren, Indextypen und Funktionssprachen hinzufügen und besitzen. | MySQL unterstützt keine Skalierbarkeit. | |
PostgreSQL unterstützt alle Standards. | MySQL unterstützt alle Standards. | |
PostgreSQL verfügt über einen aktiven Community-Support, der zur Verbesserung bestehender Funktionen beiträgt, und seine kreativen Committer arbeiten hart daran, sicherzustellen, dass die Datenbank mit den neuesten Funktionen und maximaler Datenbanksicherheit auf dem neuesten Stand bleibt. | MySQL hat auch eine große Follower-Community, und diese Community-Mitwirkenden konzentrieren sich, insbesondere nach der Übernahme durch Oracle, hauptsächlich auf einige gelegentliche neue Funktionen und pflegen bestehende Funktionen. | |
PostgreSQL bietet native SSL-Unterstützung für Verbindungen zur Verschlüsselung der Client/Server-Kommunikation. PSQL verfügt außerdem über Sicherheit auf Zeilenebene. | MySQL ist äußerst sicher und umfasst mehrere Sicherheitsfunktionen. |
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Postgresql und MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!