Zusammenfassung der Unterschiede zwischen MySQL und Oracle (Vergleich der Funktionsleistung, Auswahl, SQL bei der Verwendung usw.)

Zusammenfassung der Unterschiede zwischen MySQL und Oracle (Vergleich der Funktionsleistung, Auswahl, SQL bei der Verwendung usw.)

1. Parallelität

Die wichtigste Funktion einer OLTP-Datenbank ist die Parallelität. Allerdings umfasst Parallelität auch den Erwerb, die gemeinsame Nutzung und die Sperrung von Ressourcen.

MySQL:
MySQL verwendet hauptsächlich Sperren auf Tabellenebene, und die Granularität der Ressourcensperren ist sehr groß. Wenn eine Sitzung eine Tabelle zu lange sperrt, können andere Sitzungen die Daten in dieser Tabelle nicht aktualisieren.
Obwohl Tabellen der InnoDB-Engine Zeilensperren verwenden können, hängt der Mechanismus dieser Zeilensperre vom Index der Tabelle ab. Wenn die Tabelle keinen Index hat oder die SQL-Anweisung den Index nicht verwendet, werden trotzdem Tabellensperren verwendet.

Orakel:
Oracle verwendet Sperren auf Zeilenebene, die eine viel geringere Granularität für die Ressourcensperre aufweisen. Es sperrt nur die von SQL benötigten Ressourcen und die Sperre bezieht sich auf die Datenzeile in der Datenbank und ist nicht vom Index abhängig. Daher ist die Parallelitätsunterstützung von Oracle viel besser.

2. Konsistenz

Orakel:
Oracle unterstützt die serialisierbare Isolationsebene, mit der die höchste Stufe der Lesekonsistenz erreicht werden kann. Nachdem jede Sitzung übermittelt wurde, können andere Sitzungen die übermittelten Änderungen sehen. Oracle erreicht Lesekonsistenz durch die Konstruktion von Datenblöcken mit mehreren Versionen im Undo-Tablespace.
Wenn bei jeder Sitzungsabfrage der entsprechende Datenblock geändert wird, erstellt Oracle den alten Datenblock für diese Sitzung im Undo-Tabellenbereich.

MySQL:
MySQL verfügt im Gegensatz zu Oracle nicht über einen Mechanismus zum Erstellen von Datenblöcken mit mehreren Versionen und unterstützt nur die Isolationsebene „Read Committed“. Wenn eine Sitzung Daten liest, können andere Sitzungen die Daten nicht ändern, aber am Ende der Tabelle Daten einfügen.
Wenn eine Sitzung Daten aktualisiert, muss eine exklusive Sperre hinzugefügt werden, damit andere Sitzungen nicht auf die Daten zugreifen können.

3. Angelegenheiten

Oracle unterstützt Transaktionen bereits seit langem vollständig.

MySQL unterstützt Transaktionen nur mit Zeilensperren in der InnoDB-Speicher-Engine.

4. Datenpersistenz

Orakel
Stellen Sie sicher, dass übermittelte Daten wiederhergestellt werden können, da Oracle die übermittelten SQL-Operationszeilen in die Online-Protokolldatei schreibt und auf der Festplatte speichert.
Wenn die Datenbank oder der Host abnormal neu gestartet wird, kann Oracle das Online-Protokoll verwenden, um die vom Kunden übermittelten Daten nach dem Neustart wiederherzustellen.
MySQL:
Standardmäßig werden SQL-Anweisungen übermittelt. Wenn jedoch während des Aktualisierungsvorgangs ein Problem mit der Datenbank oder ein Neustart des Hosts auftritt, können Daten verloren gehen.

5. Übermittlungsmethode

Oracle führt die Übermittlung standardmäßig nicht automatisch durch und erfordert vom Benutzer eine manuelle Übermittlung.
Die Standardeinstellung für MySQL ist Auto-Commit.

6. Logisches Backup

Oracle sperrt während der logischen Sicherung keine Daten und die gesicherten Daten sind konsistent.

Wenn Sie eine logische Sicherung von MySQL durchführen, müssen die Daten gesperrt werden, um sicherzustellen, dass die gesicherten Daten konsistent sind, was sich auf die normale Verwendung von DML im Unternehmen auswirkt.

7. Hot-Backup

Oracle verfügt mit RMAN über ein ausgereiftes Hot-Standby-Tool, das die Verwendung der Datenbank durch Benutzer während des Hot-Standby-Modus nicht beeinträchtigt. Selbst wenn die gesicherte Datenbank inkonsistent ist, kann sie über Archivprotokolle und Online-Redo-Protokolle konsistent wiederhergestellt werden.
MySQL:
Wenn Sie die Hot-Standby-Funktion mysqlhostcopy von MySQL mit der Myisam-Engine verwenden, müssen Sie der Tabelle eine Lesesperre hinzufügen, die sich auf den DML-Vorgang auswirkt.
InnoDB-Engine, es sichert InnoDB-Tabellen und -Indizes, jedoch keine FRM-Dateien. Beim Sichern mit ibbackup wird eine Protokolldatei erstellt, um Datenänderungen während des Sicherungszeitraums aufzuzeichnen. Daher ist es nicht erforderlich, die Tabelle zu sperren, und die Verwendung der Datenbank durch andere Benutzer wird dadurch nicht beeinträchtigt. Dieses Werkzeug ist jedoch kostenpflichtig.
innobackup ist ein Skript, das in Verbindung mit ibbackup verwendet wird und beim Sichern von .frm-Dateien hilft.

8. Erweiterung und Flexibilität von SQL-Anweisungen

MySQL verfügt über viele sehr praktische und bequeme Erweiterungen für SQL-Anweisungen, wie etwa die Limit-Funktion, die Insert-Funktion, mit der mehrere Datenzeilen gleichzeitig eingefügt werden können, und die Select-Funktion, mit der bestimmte Verwaltungsdaten ausgewählt werden können, ohne dass „von“ hinzugefügt wird.
Oracle wirkt in dieser Hinsicht stabiler und traditioneller.

IX. Kopie

Oracle: Es verfügt sowohl über die traditionelle Push- oder Pull-Datenreplikation als auch über den Notfallwiederherstellungsmechanismus von DataGuard für zwei oder mehrere Maschinen. Wenn ein Problem mit der Hauptdatenbank auftritt, kann die Sicherungsdatenbank automatisch auf die Hauptdatenbank umgeschaltet werden, die Konfigurationsverwaltung ist jedoch komplizierter.
mysql: Die Konfiguration des Replikationsservers ist einfach, aber wenn es Probleme mit der Hauptdatenbank gibt, können in der Clusterdatenbank einige Daten verloren gehen. Und Sie müssen die Clusterdatenbank manuell auf die Hauptdatenbank umstellen.

10. Leistungsdiagnose

Oracle verfügt über eine Vielzahl ausgereifter Tools zur Leistungsdiagnose und -optimierung, die viele automatische Analyse- und Diagnosefunktionen implementieren können. Wie awr, addm, sqltrace, tkproof usw.
Es gibt nur wenige Diagnose- und Optimierungsmethoden für MySQL, hauptsächlich Protokolle für langsame Abfragen.

11. Berechtigungen und Sicherheit

Der MySQL-Benutzer ist mit dem Host verknüpft, was bedeutungslos erscheint. Darüber hinaus können Host und IP leichter gefälscht werden.
Die Berechtigungs- und Sicherheitskonzepte von Oracle sind relativ traditionell und standardisiert.

12. Partitionstabellen und Partitionsindizes
Die Partitionstabellen- und Partitionsindexfunktionen von Oracle sind sehr ausgereift und können den Benutzerzugriff auf die Datenbank verbessern.
Die Partitionstabelle von MySQL ist noch nicht ausgereift und stabil.

13. Verwaltungstools
Oracle verfügt über eine Vielzahl ausgereifter Befehlszeilen, grafischer Benutzeroberflächen, Webverwaltungstools und zahlreiche Verwaltungstools von Drittanbietern, wodurch die Verwaltung äußerst komfortabel und effizient wird.
Es gibt weniger MySQL-Verwaltungstools. Die Installation von Verwaltungstools unter Linux erfordert manchmal die Installation zusätzlicher Pakete (phpmyadmin usw.), was etwas kompliziert ist.

14. Technischer Support

Wenn es ein Problem mit Oracle gibt, können Sie sich an den Kundendienst wenden

Lösen Sie MySQL-Probleme selbst

15. Autorisierung

Oracle-Gebühren

mysq Open Source - kostenlos

16. Wahl

Wenn Sie Geld haben, empfehle ich Ihnen, Oracle zu verwenden.

Wenn Sie kein Geld haben, aber Ihre Anforderungen erfüllen können, empfehle ich die Verwendung von mysq. (Alibaba, Wikipedia und andere große Projekte verwenden ebenfalls MySQL und verwenden hauptsächlich verteilten Speicher, Caching, Tabellen- und Datenbank-Sharding und andere Technologien.)

Hier ist ein weiterer Artikel, der hauptsächlich einen Vergleich aus der SQL-Perspektive durchführt:

Der Unterschied zwischen Oracle-Datenbanken und MySQL-Datenbanken ist der Hauptinhalt dieses Artikels. Ich hoffe, er kann Ihnen hilfreich sein.

1. Regeln für die Nutzung von Gruppenfunktionen

In MySQL können Gruppierungsfunktionen frei in Auswahlanweisungen verwendet werden. In Oracle müssen jedoch, wenn die Abfrageanweisung eine Gruppierungsfunktion enthält, die anderen Spaltennamen von der Gruppierungsfunktion verarbeitet werden oder Spalten in der Group-By-Klausel sein. Andernfalls wird ein Fehler gemeldet.

Zum Beispiel:

select name, count(money) from user; Dies funktioniert in MySQL einwandfrei, hat jedoch in Oracle Probleme.
Und wählen Sie Name, Anzahl (Geld) aus der Benutzergruppe nach Namen oder wählen Sie Max (Name), Anzahl (Geld) vom Benutzer;
In Oracle tritt kein Fehler auf, und ebenso wird es in MySQL keinen Fehler geben.

2. Automatische Verarbeitung von Wachstumsdatentypen

MySQL verfügt über einen automatisch wachsenden Datentyp. Beim Einfügen von Datensätzen müssen Sie dieses Feld nicht bedienen, und der Datenwert wird automatisch abgerufen. ORACLE verfügt nicht über einen automatisch ansteigenden Datentyp. Daher müssen Sie eine automatisch ansteigende Sequenznummer erstellen und diesem Feld beim Einfügen eines Datensatzes den nächsten Wert der Sequenznummer zuweisen.

SEQUENZ ERSTELLEN Sequenznummernname (vorzugsweise Tabellenname + Sequenznummern-Tag) UM 1 ERHÖHEN, MIT 1 BEGINNEN, MAXIMALER WERT 99999, ZYKLUS NOCACHE;

Der Maximalwert wird durch die Länge des Feldes bestimmt. Wenn die automatisch steigende Sequenznummer NUMBER(6) definiert ist, beträgt der Maximalwert 999999

Die INSERT-Anweisung fügt diesen Feldwert ein: den Namen der Seriennummer.NEXTVAL

3. Verarbeitung von Einzelangeboten

In MySQL können Sie doppelte Anführungszeichen verwenden, um Zeichenfolgen einzuschließen, in Oracle können Sie Zeichenfolgen jedoch nur in einfache Anführungszeichen einschließen. Vor dem Einfügen und Ändern einer Zeichenfolge müssen einfache Anführungszeichen ersetzt werden: Alle Vorkommen eines einfachen Anführungszeichens werden durch zwei einfache Anführungszeichen ersetzt.

4. Verarbeitung von SQL-Anweisungen zum Umblättern

Die SQL-Anweisung für MySQL zum Verarbeiten des Seitenumblätterns ist relativ einfach. Verwenden Sie LIMIT, um die Startposition festzulegen, und notieren Sie die Nummer. In PHP können Sie auch SEEK verwenden, um die Position des Ergebnissatzes zu lokalisieren. Die SQL-Anweisungen für ORACLE zum Verarbeiten des Seitenumblätterns sind ziemlich kompliziert. Jeder Ergebnissatz hat nur ein ROWNUM-Feld, um seine Position anzugeben, und es kann nur ROWNUM<100 verwendet werden, nicht ROWNUM>80.

Nach der Analyse sind die folgenden zwei besseren ORACLE-SQL-Anweisungen zum Umblättern von Seiten aufgeführt (ID ist der Feldname des eindeutigen Schlüsselworts):

Aussage 1:

SELECT ID, [FELDNAME,...] FROM TABLE_NAME WHERE ID IN (SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE Bedingung1 ORDER BY Bedingung2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY Bedingung3;

Aussage 2:

SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE Bedingung1 ORDER BY Bedingung2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY Bedingung3;

5. Verarbeitung langer Zeichenfolgen

Auch bei der Verarbeitung langer Strings bringt ORACLE Besonderheiten mit. Die maximal verwendbare Zeichenfolgenlänge für INSERT und UPDATE beträgt höchstens 4000 einzelne Bytes. Wenn Sie eine längere Zeichenfolge einfügen möchten, sollten Sie den Typ CLOB für das Feld verwenden und das DBMS_LOB-Paket verwenden, das mit ORACLE geliefert wird. Vor dem Einfügen oder Ändern von Datensätzen müssen Sie Nicht-Leer- und Längenprüfungen durchführen. Feldwerte, die nicht leer sein können, und Feldwerte, die die Länge überschreiten, sollten eine Warnung ausgeben und zur letzten Operation zurückkehren.

6. Verarbeitung von Datumsfeldern

MYSQL-Datumsfelder sind in DATE und TIME unterteilt. ORACLE-Datumsfelder haben nur DATE, das Informationen zu Jahr, Monat, Tag, Stunde, Minute und Sekunde enthält. Die Systemzeit der aktuellen Datenbank ist SYSDATE, auf Sekunden genau, oder die Zeichenfolge wird in eine Datumstypfunktion TO_DATE('2001-08-01','YYYY-MM-DD') Jahr-Monat-Tag 24 Stunden: Minuten: Sekunden-Format YYYY-MM-DD HH24:MI:SS TO_DATE() Es gibt viele andere Datumsformate, Sie können sich auf ORACLE DOC beziehen. Datumsfeldkonvertierungszeichenfolgenfunktion TO_CHAR('2001-08-01','YYYY-MM-DD HH24:MI:SS')

Die mathematischen Formeln für Datumsfelder sind sehr unterschiedlich. MYSQL findet das Datum 7 Tage ab der aktuellen Uhrzeit mit DATE_FIELD_NAME > SUBDATE(NOW(), INTERVAL 7 DAY) ORACLE findet das Datum 7 Tage ab der aktuellen Uhrzeit mit DATE_FIELD_NAME > SYSDATE - 7;

Mehrere Funktionen in MYSQL, die die aktuelle Uhrzeit einfügen, sind: Die Funktion NOW() gibt das aktuelle Datum und die aktuelle Uhrzeit als „JJJJ-MM-TT HH:MM:SS“ zurück, was direkt im Feld DATETIME gespeichert werden kann. CURDATE() gibt das heutige Datum im Format „JJJJ-MM-TT“ zurück und kann direkt in einem DATE-Feld gespeichert werden. CURTIME() gibt die aktuelle Uhrzeit im Format „HH:MM:SS“ zurück und kann direkt im Feld TIME gespeichert werden. Beispiel: Werte in Tabellenname (Feldname) einfügen (jetzt())

Die aktuelle Zeit in Oracle ist sysdate

7. Umgang mit Nullzeichen

Die nicht leeren Felder von MySQL haben auch leere Inhalte, aber ORACLE erlaubt keine leeren Inhalte in nicht leeren Feldern. Das Definieren der ORACLE-Tabellenstruktur gemäß NOT NULL von MYSQL führt zu Fehlern beim Importieren von Daten. Daher müssen Sie beim Importieren von Daten das leere Zeichen beurteilen. Wenn es NULL oder ein leeres Zeichen ist, müssen Sie es in eine Leerzeichenfolge ändern.

8. Fuzzy-Vergleich von Zeichenfolgen

Verwenden Sie in MySQL den Feldnamen „%' string %'“. In ORACLE können Sie den Feldnamen auch „%' string %'“ verwenden, aber diese Methode kann keine Indizes verwenden und ist nicht schnell. Die Verwendung der Zeichenfolgenvergleichsfunktion instr(field name, ' string ')>0 liefert genauere Suchergebnisse.

9. Achten Sie in Programmen und Funktionen darauf, Ergebnismengen und Zeiger nach Abschluss der Datenbankoperationen freizugeben.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des Missverständnisses zwischen MySQL und Oracle
  • Implementierung einer SpringBoot-Multidatenbankverbindung (MySQL+Oracle)
  • Detaillierte Erläuterung der Lösung zur Echtzeitsynchronisierung von MySQL nach Oracle
  • Beispiel zum Erstellen von Tabellenanweisungen für den Benutzer Scott in der MySQL-Version von Oracle
  • Beschreibung der Standardtransaktionsisolationsebene von MySQL und Oracle
  • Beschreibung der Entsprechung zwischen MyBatis JdbcType und Oracle- und MySql-Datentypen
  • Detailliertes Beispiel für MySQL ähnlich dem Schreiben von Oracle Rownum
  • Eine kurze Diskussion über die Unterschiede zwischen den drei wichtigsten Datenbanken: Mysql, SqlServer und Oracle
  • Probleme und Lösungen beim Ersetzen von Oracle durch MySQL

<<:  Installationsschritte der Ubuntu 20.04-Doppelpinyin-Eingabemethode

>>:  Ubuntu 20.04: Beispiel zum Ändern der IP-Adresse

Artikel empfehlen

Detaillierte Erläuterung des Mysql-Kommunikationsprotokolls

1.Mysql-Verbindungsmethode Um das MySQL-Kommunika...

Design-Tipps: Wir glauben, es wird Ihnen gefallen

<br />Wenn Sie sich diesen Titel ansehen, ko...

So verhindern Sie das Flashen von Vue in kleinen Projekten

Zusammenfassung HTML: Element plus V-Umhang CSS: ...

Erste Schritte mit CSS3-Animation in 10 Minuten

Einführung Mit Animation können Sie mithilfe von ...

Detaillierte Erklärung des Fischschwarm-Algorithmus im CocosCreator-Spiel

Vorwort Ich wollte vor kurzem CocosCreator lernen...

Ideen und Codes zur Implementierung des Wasserfall-Flow-Layouts im UniApp-Applet

1. Einleitung Gilt es als Aufwärmen alter Themen,...

Logrotate implementiert alle zwei Stunden die Catalina.out-Protokollrotation

1. Einführung in das Logrotate-Tool Logrotate ist...

Vue Learning - Grundlagen des VueRouter-Routings

Inhaltsverzeichnis 1. VueRouter 1. Beschreibung 2...

Was sind die Dateiattribute von crw, brw, lrw usw. in Linux?

Was ist eine Datei? Eigentlich sind alle Dateien ...

jQuery erzielt den Effekt einer Werbung, die nach oben und unten gescrollt wird

In diesem Artikel wird der spezifische Code von j...