Inhaltsverzeichnis
Einführung in Datenbanktransaktionen
Vier Hauptmerkmale von Transaktionen (ACID)
Transaktionsisolationsstufe
Transaktions- und MVCC-Prinzip
Probleme, die dadurch verursacht werden, dass verschiedene Transaktionen gleichzeitig dieselben Daten verarbeiten
LBCC behebt Datenverlust
MVCC behebt Datenverlust
MVCC-Implementierungslogik von InnoDB
Heim Datenbank SQL Lassen Sie uns über den Isolationsgrad sprechen, der durch MySQL-Transaktionen und MVCC erreicht wird

Lassen Sie uns über den Isolationsgrad sprechen, der durch MySQL-Transaktionen und MVCC erreicht wird

Jan 26, 2022 pm 05:11 PM
sql

Dieser Artikel wirft Ihnen einige Fragen zur Isolationsstufe von MySQL-Transaktionen und wie MVCC diese implementiert. Ich hoffe, dass er Ihnen hilfreich sein wird.

Lassen Sie uns über den Isolationsgrad sprechen, der durch MySQL-Transaktionen und MVCC erreicht wird

Einführung in Datenbanktransaktionen

Vier Hauptmerkmale von Transaktionen (ACID)

  1. Atomizität (Atomizität): Die kleinste Arbeitseinheit einer Transaktion, entweder alles erfolgreich oder alles fehlgeschlagen.

  2. Konsistenz: Nach Beginn und Ende der Transaktion wird die Integrität der Datenbank nicht zerstört.

  3. Isolation: Verschiedene Transaktionen beeinflussen sich nicht gegenseitig. Die vier Isolationsstufen sind RU (Read Uncommitted), RC (Read Committed), RR (Repeatable Read), SERIALIZABLE (Serial Change).

  4. Dauerhaftigkeit: Nachdem die Transaktion übermittelt wurde, ist die Änderung der Daten dauerhaft und geht auch bei einem Systemausfall nicht verloren.

Transaktionsisolationsstufe

Read UnCommitted/RU

Auch als Dirty Read bekannt, kann eine Transaktion nicht festgeschriebene Daten einer anderen Transaktion lesen. Diese Isolationsstufe ist am wenigsten sicher, da nicht festgeschriebene Transaktionen einem Rollback unterliegen.

Read Committed/RC

Auch bekannt als Nicht wiederholbares Lesen, liest eine Transaktion die geänderten Daten, die von einer anderen Transaktion übermittelt wurden, was dazu führt, dass dasselbe Element zu unterschiedlichen Zeitpunkten in den Datenerfassungsergebnissen der aktuellen Transaktion gelesen wird sind inkonsistent.

Im folgenden Beispiel werden Sie beispielsweise feststellen, dass SessionA während einer Transaktion zweimal unterschiedliche Daten abfragt. Der Grund dafür ist, dass die aktuelle Isolationsstufe RC ist und die Transaktion von SessionA die neuesten von SessionB übermittelten Daten lesen kann.

Auftrittszeit SitzungA SitzungB
1 Beginn;
2 select * from user where id=1;( Zhang San)
3
Benutzersatznamen aktualisieren='李思', wobei ID=1; (Standardmäßiges implizites Transaktions-Commit)
4 Wählen Sie * aus Benutzer, wobei ID = 1;(李思)
5
Update user set name='王二' where id=1;(standardmäßige implizite Commit-Transaktion)
6 select * from user wobei id=1;(王二)

Repeatable Read/RR)

auch bekannt alsPhantom Read, ein Transaktionslesevorgang kann andere Transaktions-Commits lesen. Unter der RR-Isolationsstufe kann jedoch Diese Daten können in der aktuellen Transaktion nur einmal gelesen werden, unabhängig davon, wie oft sie gelesen werden. Nach einem Lesevorgang werden die Daten von anderen Transaktionen geändert und festgeschrieben. Daher handelt es sich auch um eine Phantomlesung, da es sich bei den ausgelesenen Daten nicht unbedingt um die neuesten Daten handelt.

Zum Beispiel: Wenn Daten zum ersten Mal in SessionA gelesen werden, haben nachfolgende Transaktionen, die die übermittelten Daten ändern, keinen Einfluss auf den von SessionA gelesenen Datenwert. Das ist wiederholbar.

Auftrittszeit SitzungA SitzungB
1 Beginn;
2 select * from user where id=1;( Zhang San)
3
Benutzersatznamen aktualisieren='李思', wobei ID=1; (Standardmäßige implizite Transaktionsübermittlung)
4 Wählen Sie * vom Benutzer aus, wobei ID = 1;(Zhang San)
5
Benutzer aktualisieren set name='王二' where id=1;(Standard implizites Transaktions-Commit)
6 select * from user wobei id=1;(张三)

Serialisierbar

Alle Datenbank-Lese- oder Schreibvorgänge werden seriell ausgeführt, und unter der aktuellen Isolationsstufe wird nur ein einziger unterstützt. Anforderungen werden gleichzeitig ausgeführt, und Alle Vorgänge erfordern eine Warteschlangenausführung. Daher sind alle Daten unter dieser Isolationsstufe am stabilsten, aber auch die Leistung ist am schlechtesten. Die Sperrimplementierung der Datenbank ist eine Version dieser Isolationsstufe mit geringerer Granularität.

commit;6
Auftrittszeit SitzungA SitzungB
1 Beginn;
2
beginnen;
3
Benutzersatznamen aktualisieren='李思', wobei ID=1;

select * from user where id=1;(李思)

Transaktions- und MVCC-Prinzip

Probleme, die dadurch verursacht werden, dass verschiedene Transaktionen gleichzeitig dieselben Daten verarbeiten

Beispiel:

Schecksaldo = 1000 Yuan 5Der Einzahlungsbetrag beträgt 100 Yuan und der geänderte Saldo beträgt 1100 Yuan68Transaktion einreichen (Saldo = 1100) 9beginnen;Schecksaldo = 1000 Yuan 4
Auftretenszeit SitzungA SitzungB
1 beginnen "


100 Yuan in bar abheben, und der geänderte Saldo beträgt derzeit 900 Yuan


Transaktion einreichen (Saldo = 900)
??
2

3

Schecksaldo = 1000 Yuan
5Transaktion abbrechen ( Restbetrag auf 1000 Yuan wiederhergestellt)

Die beiden oben genannten Situationen können auftreten, wenn mehrere Transaktionen gleichzeitig mit einem Datenelement ausgeführt werden. Der Vorgang einer bestimmten Transaktion kann überschrieben werden, was zu Datenverlust führt.

LBCC behebt Datenverlust

LBCC, Lock Based Concurrency Control.

Wenn die aktuelle Transaktion die Daten ändern muss, wird sie mithilfe des Sperrmechanismus gesperrt. Nur eine Transaktion darf die aktuellen Daten gleichzeitig ändern, und andere Transaktionen müssen warten, bis die Sperre aufgehoben wird bevor sie operieren können.

MVCC behebt Datenverlust

MVCC, Multi-Version-Parallelitätskontrolle, Multi-Version-Parallelitätskontrolle.

Verwenden Sie die Version, um Datenprobleme bei Parallelität zu kontrollieren. Wenn Transaktion B mit der Änderung des Kontos beginnt und die Transaktion nicht übermittelt wird und Transaktion A den Kontostand lesen muss, wird der Kontostand vor dem Änderungsvorgang von Transaktion B gelesen . Daten kopieren, aber wenn Transaktion A die Kontostanddaten ändern muss, muss sie warten, bis Transaktion B die Transaktion festschreibt.

MVCC ermöglicht das Lesen der Datenbank, ohne Daten zu sperren, und normale SELECT-Anfragen werden nicht gesperrt, was die gleichzeitige Verarbeitungsfähigkeit der Datenbank verbessert. Mit Hilfe von MVCC kann die Datenbank Isolationsstufen wie READ COMMITTED und REPEATABLE READ implementieren. Benutzer können die vorherigen oder früheren historischen Versionen der aktuellen Daten anzeigen und so die I-Funktion (Isolation) in ACID sicherstellen.

MVCC-Implementierungslogik von InnoDB

Die von der InnoDB-Speicher-Engine gespeicherten MVCC-Daten

MVCC von InnoDB wird implementiert, indem zwei versteckte Spalten hinter jeder Datensatzzeile gespeichert werden. Eine Transaktions-ID (DB_TRX_ID), die die Zeile speichert, und ein Rollback-Zeiger (DB_ROLL_PT), der die Zeile speichert. Jedes Mal, wenn eine neue Transaktion gestartet wird, wird automatisch eine neue Transaktions-ID erhöht. Zu Beginn der Transaktion wird die Transaktions-ID in die von der aktuellen Transaktion betroffene Zeile eingefügt. Bei der Abfrage muss die aktuelle Transaktions-ID mit der in jeder Zeile aufgezeichneten Transaktions-ID verglichen werden.

Werfen wir einen Blick darauf, wie MVCC unter der Isolationsstufe REPEATABLE READ funktioniert.

SELECT

InnoDB prüft jeden Zeilendatensatz gemäß den folgenden zwei Bedingungen:

  1. InnoDB sucht nur nach Datenzeilen, deren Version älter als die aktuelle Transaktionsversion ist (d. h. die Transaktionsnummer der Zeile). kleiner oder gleich der aktuellen Transaktionsversionsnummer) wird dadurch sichergestellt, dass die von der Transaktion gelesenen Zeilen entweder bereits vor dem Start der Transaktion vorhanden sind oder von der Transaktion selbst eingefügt oder geändert wurden.

  2. Die gelöschten Zeilen müssen anhand der Transaktions-ID und der Statusversion vor dem Lesen der Transaktion beurteilt werden. Nur Datensätze, die die beiden oben genannten Bedingungen erfüllen, können als Abfrageergebnisse zurückgegeben werden.

INSERT

InnoDB speichert die aktuelle Transaktionsnummer als Zeilenversionsnummer für jede neu eingefügte Zeile.

DELETE

InnoDB speichert die aktuelle Transaktionsnummer als Zeilenlöschungsidentifikation für jede gelöschte Zeile.

UPDATE

InnoDB fügt eine neue Zeile mit Datensätzen ein, speichert die aktuelle Transaktionsnummer als Zeilenversionsnummer und speichert die aktuelle Transaktionsnummer in der ursprünglichen Zeile als Zeilenlöschungskennung.

Speichern Sie diese beiden zusätzlichen Transaktionsnummern, damit die meisten Lesevorgänge ohne Sperrung durchgeführt werden können. Dieses Design macht den Datenlesevorgang sehr einfach, die Leistung ist sehr gut und es stellt außerdem sicher, dass nur Zeilen gelesen werden, die den Standards entsprechen. Die Nachteile bestehen darin, dass jede Datensatzzeile zusätzlichen Speicherplatz, mehr Zeilenprüfung und einige zusätzliche Wartungsarbeiten erfordert.

MVCC funktioniert nur unter zwei Isolationsstufen: REPEATABLE READ und READ COMMITIED. Die anderen beiden Isolationsstufen sind nicht mit MVCC kompatibel, da READ UNCOMMITIED immer die neueste Datenzeile liest, nicht die Datenzeile, die der aktuellen Transaktionsversion entspricht. SERIALIZABLE sperrt alle gelesenen Zeilen.

Die Implementierung von MVCC in MySQL basiert auf dem Rückgängigmachen des Protokolls und der Leseansicht.

Rückgängig-Protokoll

Je nach unterschiedlichem Verhalten ist das Rückgängig-Protokoll in zwei Typen unterteilt: Rückgängig-Protokoll einfügen und Rückgängig-Protokoll aktualisieren

  • Rückgängig-Protokoll einfügen:

Einfügen. Rückgängig machen erzeugt während der Vorgangsprotokoll, da der Einfügungsvorgangsdatensatz nur für die aktuelle Transaktion selbst gilt und für andere Transaktionen nicht sichtbar ist, sodass das Einfüge-Rückgängig-Protokoll direkt nach dem Absenden der Transaktion gelöscht werden kann, ohne dass ein Löschvorgang erforderlich ist.

Die Hauptaufgabe der Bereinigung besteht darin, die Daten zu löschen, die in der Datenbank als „del“ markiert wurden. Darüber hinaus werden auch Rückgängig-Seiten stapelweise recycelt.

Der Anfangszustand der Daten beim Einfügen der Datenbank:

  • Update-Rückgängig-Protokoll:

    Update oder Das während des Löschvorgangs generierte Rückgängig-Protokoll. Da es sich auf vorhandene Datensätze auswirkt, kann das Update-Rückgängig-Protokoll zur Bereitstellung des MVCC-Mechanismus nicht gelöscht werden, wenn die Transaktion übermittelt wird. Stattdessen wird es bei der Übermittlung der Transaktion in die Verlaufsliste aufgenommen und wartet auf die Ausführung des Bereinigungsthreads Der letzte Löschvorgang.

    Wenn die Daten zum ersten Mal geändert werden:

Wenn eine andere Transaktion die aktuellen Daten zum zweiten Mal ändert:

Um sicherzustellen, dass Transaktionen beim Schreiben ihrer jeweiligen Rückgängig-Protokolle nicht in Konflikt geraten Gleichzeitige Vorgänge, InnoDB Verwenden Sie Rollback-Segmente, um das gleichzeitige Schreiben und die Persistenz von Rückgängig-Protokollen aufrechtzuerhalten. Das Rollback-Segment ist eigentlich eine Möglichkeit, Undo-Dateien zu organisieren.

ReadView

Für die Isolationsstufe RU(READ UNCOMMITTED) können alle Transaktionen den neuesten Wert der Datenbank direkt lesen, und für die Isolationsstufe SERIALIZABLE werden alle Anforderungen gesperrt und synchron ausgeführt. In diesen beiden Fällen ist es also nicht erforderlich, die Versionskontrolle von Read View zu verwenden.

Für RC(READ COMMITTED) und RR(REPEATABLE READ) wird die Implementierung der Isolationsstufe durch die obige Versionskontrolle abgeschlossen. Die Kernverarbeitungslogik unter den beiden Isolationskategorien besteht darin, zu bestimmen, welche Version unter allen Versionen für die aktuelle Transaktion sichtbar ist. Um dieses Problem zu lösen, hat InnoDB ein ReadView-Design hinzugefügt, das hauptsächlich die anderen aktiven Lese- und Schreibtransaktionen im aktuellen System enthält und ihre Transaktions-IDs in eine Liste einfügt . Die Beurteilungslogik dafür, ob die Versionskettendaten während der Abfrage sichtbar sind:

Wenn der trx_id-Attributwert der abgerufenen Version kleiner als die kleinste Transaktions-ID in der m_ids-Liste ist, bedeutet dies, dass die Transaktion diese Version generiert hat wurde übermittelt, bevor die ReadView generiert wurde, sodass auf diese Version von der aktuellen Transaktion zugegriffen werden kann.
  • Wenn der Wert des trx_id-Attributs der Version, auf die zugegriffen wird, größer ist als die größte Transaktions-ID in der m_ids-Liste, bedeutet dies, dass die Transaktion, die diese Version generiert hat, nach der ReadView-Generierung generiert wurde, sodass auf diese Version nicht zugegriffen werden kann durch die aktuelle Transaktion.
  • Wenn der trx_id-Attributwert der aufgerufenen Version zwischen der größten Transaktions-ID und der kleinsten Transaktions-ID in der m_ids-Liste liegt, müssen Sie feststellen, ob der trx_id-Attributwert in der m_ids-Liste enthalten ist bedeutet, dass beim Erstellen von ReadView die Transaktion dieser Version noch aktiv ist und auf diese Version nicht zugegriffen werden kann. Andernfalls bedeutet dies, dass die Transaktion, die diese Version beim Erstellen von ReadView generiert hat, festgeschrieben wurde und diese Version verfügbar ist zugegriffen.
  • Zum Beispiel:

ReadView unter der Isolationsstufe READ COMMITTED

Generieren Sie jedes Mal eine ReadView (m_ids-Liste), bevor Sie Daten lesen

Der Einzahlungsbetrag beträgt 100 Yuan Der geänderte Saldo beträgt 1100 Yuan 6Heben Sie 100 Yuan in bar ab, und der geänderte Saldo beträgt zu diesem Zeitpunkt 900 Yuan
ZeitT1beginnen;beginnen;beginnen;T4...T. 5SELECT * FROM user where id = 1;T7UPDATE Benutzer SET Name = 'Neymar' WHERE id = 1;T8UPDATE user SET name = 'Dybala ' WHERE id = 1;T10commit;T11
Transaktion 777 Transaktion 888 Transaktion 999



T3 UPDATE user SET name = 'CR7' WHERE id = 1;




UPDATE Benutzer SET name = 'Messi ' WHERE id = 1;

T6
commit;

.


SELECT * FROM user where id = 1;

T9




SELECT * FROM user where id = 1;

Hier ist eine Analyse der ReadView in der obigen Situation

Die SELECT-Anweisung zum Zeitpunkt T5:

Die Versionskette zum aktuellen Zeitpunkt:

Die SELECT-Anweisung wird zu diesem Zeitpunkt ausgeführt und die Versionskette von Die aktuellen Daten sind wie oben, da die aktuelle Transaktion 777 und die Transaktion 888 nicht übermittelt wurden, sodass die Liste der ReadView der zu diesem Zeitpunkt aktiven Transaktionen m_ids: [777, 888] ist, sodass die Abfrageanweisung darauf basieren wird die größten Versionsdaten in der aktuellen Versionskette, die kleiner als m_ids sind. Das heißt, die Abfrage ist Mbappe.

Die SELECT-Anweisung zum Zeitpunkt T8:

Die Versionskettensituation zum aktuellen Zeitpunkt:

Die SELECT-Anweisung wird zu diesem Zeitpunkt ausgeführt, und die Versionskette der aktuellen Daten ist wie oben, da die aktuelle Transaktion erfolgt 777 wurde übermittelt und Transaktion 888 wurde nicht übermittelt, sodass die Liste der derzeit aktiven Transaktionen m_ids: [888] ist, sodass die Abfrageanweisung auf den größten Versionsdaten in der aktuellen Versionskette basiert Das sind weniger als m_ids, das heißt, Messi wird abgefragt.

SELECT-Anweisung zum Zeitpunkt T11:

Versionsketteninformationen zum aktuellen Zeitpunkt:

Zu diesem Zeitpunkt wird die SELECT-Anweisung ausgeführt und die Versionskette der aktuellen Daten ist wie oben, da die aktuelle Transaktion erfolgt 777 und Transaktion 888 wurden übermittelt. Daher ist die ReadView-Liste für aktive Transaktionen zu diesem Zeitpunkt leer, sodass die Abfrageanweisung direkt die neuesten Daten der aktuellen Datenbank abfragt, dh Dybala.

Zusammenfassung: Eine Transaktion mit der Isolationsstufe READ COMMITTED generiert zu Beginn jeder Abfrage eine unabhängige ReadView.

ReadView unter der Isolationsstufe REPEATABLE READ

Erzeugt eine ReadView (m_ids-Liste), wenn die Daten zum ersten Mal nach Beginn der Transaktion gelesen werden

T3T4T5UPDATE. Benutzer SET-Name = 'Messi' WHERE id = 1;SELECT * FROM user where id = 1;T6T7UPDATE Benutzer SET name = ' Neymar' WHERE id = 1;T8T9UP DATE user SET name = 'Dybala ' WHERE id =. 1;T10commit;T11m_idsSELECT-Anweisung zum Zeitpunkt T8: m_ids bei T5 zu diesem Zeitpunkt noch verwendet werden: [777.999]Aktuelle Versionskette:
Zeit Transaktion 777 Transaktion 888. Transaktion 999 beginnen;beginnen;
UPDATE-Benutzer SET name = 'CR7' WHERE id = 1;


...


commit;



SELECT * FROM user where id = 1;





ECT * FROM user where id = 1;
Zeitpunkt SELECT-Anweisung im Fall von T5: Aktuelle Versionskette:
Eine ReadView wird generiert, wenn die SELECT-Anweisung aktuell ausgeführt wird. Zu diesem Zeitpunkt ist der Inhalt von : [777,888], also Die gemäß der sichtbaren Version von ReadView abgefragten Daten sind Mbappe.
Aktuelle Versionskette:
In der aktuellen Transaktion 999 zu diesem Zeitpunkt. Da ReadView zum Zeitpunkt T5 generiert wurde, wird ReadView in der aktuellen Transaktion nur einmal generiert, sodass die
, sodass die Abfragedaten zu diesem Zeitpunkt immer noch Mbappe sind.
SELECT-Anweisung zum Zeitpunkt T11:

Die Situation zu diesem Zeitpunkt ist genau die gleiche wie bei T8. Da ReadView zum Zeitpunkt T5 generiert wurde, wird ReadView in der aktuellen Transaktion nur einmal generiert, sodass die

m_ids bei T5 zu diesem Zeitpunkt noch verwendet werden: [777.999]

, sodass die Abfragedaten zu diesem Zeitpunkt immer noch Mbappe sind.

MVCC-Zusammenfassung:

Der sogenannte MVCC (Multi-Version Concurrency Control, Multi-Version-Parallelitätskontrolle) bezieht sich auf die Verwendung der beiden Isolationsstufen

READ COMMITTD

und

REPEATABLE READ

zur Ausführung gewöhnlicher Transaktionen. Bei der SEELCT-Operation handelt es sich um den Prozess des Zugriffs auf die aufgezeichnete Versionskette, der es ermöglicht,
Vorgänge verschiedener Transaktionen gleichzeitig auszuführen und so die Systemleistung zu verbessern.

Empfohlenes Lernen: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonLassen Sie uns über den Isolationsgrad sprechen, der durch MySQL-Transaktionen und MVCC erreicht wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework? Apr 17, 2024 pm 02:57 PM

HQL und SQL werden im Hibernate-Framework verglichen: HQL (1. Objektorientierte Syntax, 2. Datenbankunabhängige Abfragen, 3. Typsicherheit), während SQL die Datenbank direkt betreibt (1. Datenbankunabhängige Standards, 2. Komplexe ausführbare Datei). Abfragen und Datenmanipulation).

Verwendung der Divisionsoperation in Oracle SQL Verwendung der Divisionsoperation in Oracle SQL Mar 10, 2024 pm 03:06 PM

„Verwendung der Divisionsoperation in OracleSQL“ In OracleSQL ist die Divisionsoperation eine der häufigsten mathematischen Operationen. Während der Datenabfrage und -verarbeitung können uns Divisionsoperationen dabei helfen, das Verhältnis zwischen Feldern zu berechnen oder die logische Beziehung zwischen bestimmten Werten abzuleiten. In diesem Artikel wird die Verwendung der Divisionsoperation in OracleSQL vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Zwei Arten von Divisionsoperationen in OracleSQL In OracleSQL können Divisionsoperationen auf zwei verschiedene Arten durchgeführt werden.

Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2 Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2 Mar 11, 2024 pm 12:09 PM

Oracle und DB2 sind zwei häufig verwendete relationale Datenbankverwaltungssysteme, die jeweils über ihre eigene, einzigartige SQL-Syntax und -Eigenschaften verfügen. In diesem Artikel werden die SQL-Syntax von Oracle und DB2 verglichen und unterschieden und spezifische Codebeispiele bereitgestellt. Datenbankverbindung Verwenden Sie in Oracle die folgende Anweisung, um eine Verbindung zur Datenbank herzustellen: CONNECTusername/password@database. In DB2 lautet die Anweisung zum Herstellen einer Verbindung zur Datenbank wie folgt: CONNECTTOdataba

Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis Feb 26, 2024 pm 07:48 PM

Interpretation der dynamischen SQL-Tags von MyBatis: Detaillierte Erläuterung der Verwendung von Set-Tags. MyBatis ist ein hervorragendes Persistenzschicht-Framework. Es bietet eine Fülle dynamischer SQL-Tags und kann Datenbankoperationsanweisungen flexibel erstellen. Unter anderem wird das Set-Tag zum Generieren der SET-Klausel in der UPDATE-Anweisung verwendet, die sehr häufig bei Aktualisierungsvorgängen verwendet wird. In diesem Artikel wird die Verwendung des Set-Tags in MyBatis ausführlich erläutert und seine Funktionalität anhand spezifischer Codebeispiele demonstriert. Was ist Set-Tag? Set-Tag wird in MyBati verwendet

Was bedeutet das Identitätsattribut in SQL? Was bedeutet das Identitätsattribut in SQL? Feb 19, 2024 am 11:24 AM

Was ist Identität in SQL? In SQL ist Identität ein spezieller Datentyp, der zum Generieren automatisch inkrementierender Zahlen verwendet wird. Er wird häufig verwendet, um jede Datenzeile in einer Tabelle eindeutig zu identifizieren. Die Spalte „Identität“ wird oft in Verbindung mit der Primärschlüsselspalte verwendet, um sicherzustellen, dass jeder Datensatz eine eindeutige Kennung hat. In diesem Artikel wird die Verwendung von Identity detailliert beschrieben und es werden einige praktische Codebeispiele aufgeführt. Die grundlegende Möglichkeit, Identity zu verwenden, besteht darin, Identit beim Erstellen einer Tabelle zu verwenden.

So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

So beheben Sie den 5120-Fehler in SQL So beheben Sie den 5120-Fehler in SQL Mar 06, 2024 pm 04:33 PM

Lösung: 1. Überprüfen Sie, ob der angemeldete Benutzer über ausreichende Berechtigungen zum Zugriff auf oder zum Betrieb der Datenbank verfügt, und stellen Sie sicher, dass der Benutzer über die richtigen Berechtigungen verfügt. 2. Überprüfen Sie, ob das Konto des SQL Server-Dienstes über die Berechtigung zum Zugriff auf die angegebene Datei verfügt Ordner und stellen Sie sicher, dass das Konto über ausreichende Berechtigungen zum Lesen und Schreiben der Datei oder des Ordners verfügt. 3. Überprüfen Sie, ob die angegebene Datenbankdatei von anderen Prozessen geöffnet oder gesperrt wurde. Versuchen Sie, die Datei zu schließen oder freizugeben, und führen Sie die Abfrage erneut aus . Versuchen Sie es als Administrator. Führen Sie Management Studio aus als usw.

Wie verwende ich SQL-Anweisungen zur Datenaggregation und Statistik in MySQL? Wie verwende ich SQL-Anweisungen zur Datenaggregation und Statistik in MySQL? Dec 17, 2023 am 08:41 AM

Wie verwende ich SQL-Anweisungen zur Datenaggregation und Statistik in MySQL? Datenaggregation und Statistiken sind sehr wichtige Schritte bei der Durchführung von Datenanalysen und Statistiken. Als leistungsstarkes relationales Datenbankverwaltungssystem bietet MySQL eine Fülle von Aggregations- und Statistikfunktionen, mit denen Datenaggregation und statistische Operationen problemlos durchgeführt werden können. In diesem Artikel wird die Methode zur Verwendung von SQL-Anweisungen zur Durchführung von Datenaggregation und Statistiken in MySQL vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Verwenden Sie zum Zählen die COUNT-Funktion. Die COUNT-Funktion wird am häufigsten verwendet

See all articles