Ich weiß, die Frage klingt provokativ, ist es aber wirklich nicht. Ich finde in letzter Zeit, dass MySQL in vielen Bereichen einschränkend ist und PostgreSQL immer mehr mag. Es skaliert viel besser und respektiert die SQL-Standards viel mehr als MySQL.
Ich bin jedoch noch neu in der PostgreSQL-Welt und da ich bereit bin, mich für alle meine zukünftigen Projekte von MySQL zu entfernen, möchte ich wissen: Gibt es eine bestimmte Funktion von MySQL, die besser funktioniert (wie in mehr)? leistungsstärker oder benutzerfreundlicher usw.) als in PostgreSQL?
Ich frage mich, was ich von MySQL vermissen werde. Ich habe bereits festgestellt, dass die Felder AUTO_INCREMENT in MySQL praktischer sind als SEQUENCES in PostgreSQL, und die Bereitstellung unter Windows war in der Vergangenheit problematisch (kein Problem mehr. Nie ein Problem für mich).
Was sonst?
quelle
Antworten:
Sie nähern sich dem eindeutig aus Entwicklersicht, sodass Sie bei SO möglicherweise nützlichere Antworten finden.
Aus administrativer Sicht:
- Replikation (HA)
- Replikation (Skalierung *)
- Replikation (Backups)
- Anwendungsunterstützung
- Größe und Tiefe der Community (Dokumentation, Support)
- Vorhandene Installationsbasis / verfügbare Jobs
* Beachten Sie, dass Sie die
postgres
Skalierung besser erwähnt haben. Skalierung bedeutet für jeden etwas anderes, aber in der Regel lassen sich Dinge, die die Last auf mehrere Server verteilen können, besser skalieren als Dinge, die dies nicht tun.quelle
COUNT (*) ist mit PSQL auch viel langsamer. Sie sollten Trigger für diese Art von Funktionalität erstellen.
quelle
Da Postgres für jedes Update effektiv eine Kopie beim Schreiben erstellt (damit Transaktionen verarbeitet werden können), hat MySQL nicht den Overhead, den PostgreS hat, wenn Sie keine Transaktionen benötigen und viele Schreibvorgänge in Bezug auf Lesevorgänge ausführen werden. (Jeder aktualisierte Datensatz muss mehr schreiben, Indizes aktualisieren usw.)
quelle
Ich kann mir eine Sache vorstellen, die in PostgreSQL fehlt:
Ich denke, es gab auch etwas mit Blockieren, Einfügen oder Aktualisieren. Aber ich kann mich anscheinend nicht erinnern, was es tatsächlich war. : S.
quelle
Das Feld "auto_increment", das "praktisch" ist, ist nicht sehr relevant, oder? Oracle hat Sequenzen und ist zweifellos die am weitesten verbreitete kommerzielle Datenbank der Welt.
Das ist eine riesige Menge an Informationen darüber, wie PostgreSQL absturzsicherer ist und so weiter. Ich werde Sie nur auf diese Seite im PostgreSQL-Wiki verweisen (zweifellos eine farbige Meinung, aber das ist es, wonach Sie suchen).
Viele Leute erwähnen auf dieser Seite, dass MySQL für Neulinge freundlicher ist. Damit? Erklären Sie mir, wie wichtig dies in einer geschäftskritischen Umgebung ist.
quelle
MySQL wird oft als SQL-Grep bezeichnet . Für mich (jetzt zum Zeitpunkt des Schreibens) sieht es ziemlich nach PHP aus - ziemlich umständlich, aber beliebt.
Versuchen Sie, eine Datenbank von Anfang an umzubenennen. ;) Dann füge (fehlende) bedingte Indizes hinzu.
PS Ich kann auf mindestens eine unbestreitbare gute Funktion hinweisen, die MySQL hat - es unterstützt eher platzsparende Datentypen, die so klein sind wie (vorzeichenloses) Byte, z. Dies könnte bei entsprechender Verwendung viel RAM und Speicherplatz sparen. Aber es gibt leider noch ein paar Leckereien zu erwähnen. Und der Vergleich des Links, den Sie erhalten haben, ist wirklich geschickt.
quelle
auto_increment ist praktisch, bis Sie feststellen, dass sie für Tabellen mit extrem hoher Einfügungsparallelität saugen. Zu diesem Zeitpunkt werden sie zu einem Flaschenhals und Sie müssen eine Sequenz mithilfe einer MyISAM-Tabelle implementieren.
Um Ihre Frage zu beantworten, war es für MySQL am einfachsten, eine Replikation einzurichten, die Replikationsverkettungen und das Lesen von Slaves ermöglicht. Postgres wird dies jedoch in der nächsten Version 9.0 haben (die bereits im Alpha-Status ist).
quelle