Dieser Artikel erläutert anhand von Beispielen die Prinzipien und die Verwendung von MySQL-Wissenspunkten wie Transaktionen, Indizes und Sperren. Teilen Sie uns die Einzelheiten zu Ihrer Information mit: Transaktionen
Eine Transaktion ist eine Reihe atomarer SQL-Abfragen oder eine unabhängige Arbeitseinheit. Wenn die Datenbank-Engine eine Reihe von Operationsanweisungen ausführt, werden alle Operationen ausgeführt. Wenn eine davon abstürzt oder aus anderen Gründen nicht ausgeführt werden kann, werden nicht alle Anweisungen ausgeführt. Das heißt, alle Anweisungen in einer Transaktion werden entweder erfolgreich ausgeführt oder alle sind fehlgeschlagen.
Index
Ein Index ist eine Datenstruktur, die es Benutzern von Speichermaschinen ermöglicht, Datensätze schnell zu finden. Zum Beispiel SELECT Benutzername FROM Benutzer WHERE Benutzer-ID = 1; Wenn Sie der Spalte userId einen Index hinzufügen, verwendet MySQL den Index, um die Zeile für userId zu finden. Das heißt, MySQL durchsucht den Index zuerst nach Wert und gibt dann alle Datenzeilen zurück, die den Wert enthalten.
SperrenHier diskutieren wir hauptsächlich Downlink-Level-Locks
Die MyISAM-Engine kann so verstanden werden, dass sie die gesamte Tabelle sperrt. Sie kann gleichzeitig gelesen, aber nicht gleichzeitig geschrieben werden. Während der Sperrzeit können andere Prozesse nicht in die Tabelle schreiben. Handelt es sich um eine Schreibsperre, dürfen andere Prozesse nicht lesen.
Bei der INNODB-Engine ist eine einzelne Datensatzzeile gesperrt und kann gleichzeitig gelesen, aber nicht gleichzeitig geschrieben werden. Sperren auf Zeilenebene weisen einen hohen Overhead und eine langsame Sperrung auf. Es können Deadlocks auftreten. Die Sperrgranularität ist am geringsten, die Wahrscheinlichkeit von Sperrkonflikten am geringsten und die Parallelität am höchsten.
Da InnoDB standardmäßig eine Zeilensperre verwendet, führt MySQL eine Zeilensperre nur aus, wenn der Primärschlüssel explizit angegeben ist. Andernfalls führt MySQL eine Tabellensperre aus. Beispiel 1: (Geben Sie den Primärschlüssel explizit an, und es gibt einen solchen Datensatz, Zeilensperre) Wählen Sie * aus Produkten, wobei id = "3" für Update ist. Wählen Sie * aus Produkten, wobei ID = "3" und Typ = 1 für Update ist. Beispiel 2: (Geben Sie den Primärschlüssel explizit an. Wenn kein solcher Datensatz gefunden wird, wird keine Sperre ausgeführt.) Wählen Sie * aus Produkten, wobei id = '-1' für Update ist. Beispiel 3: (kein Primärschlüssel, Tabellensperre) SELECT * FROM Produkte WHERE Name='Maus' FOR UPDATE; Beispiel 4: (Unklarer Primärschlüssel, Tabellensperre) Wählen Sie * aus Produkten, wobei ID<>'3' für Update ist. Beispiel 5: (Primärschlüssel ist unklar, Tabellensperre) Wählen Sie * aus Produkten, wobei die ID wie „3“ für das Update lautet. Hinweis 1: FOR UPDATE ist nur auf InnoDB anwendbar und muss in einem Transaktionsblock (BEGIN/COMMIT) ausgeführt werden, um wirksam zu werden. Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „Zusammenfassung der Kenntnisse im Bereich MySQL-Indexoperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Allgemeinfunktionen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Protokolloperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-Transaktionsoperationen“, „Zusammenfassung der Kenntnisse im Bereich MySQL-gespeicherte Prozeduren“ und „Zusammenfassung der Kenntnisse im Zusammenhang mit MySQL-Datenbanksperren“. Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist. Das könnte Sie auch interessieren:
|
<<: Implementierung von React Routing Guard (Routing-Interception)
>>: So verwenden Sie den Linux-Befehl „locate“
Nachdem wir eine Webdienstanwendung (wie etwa Tom...
Standortabgleichsreihenfolge 1. Übereinstimmung m...
Ich habe heute mit der Arbeit an meinem Abschluss...
Nach der Konfiguration der TabBar im WeChat-Apple...
Erstellen eines Containers [root@server1 ~]# dock...
Inhaltsverzeichnis Die Reihenfolge, in der MySQL ...
<br />Verwandter Artikel: Analyse der Inform...
1. Laden Sie das Installationsskript - composer-s...
1. Führen Sie die .sh-Datei aus Sie können es dir...
Nginx unterstützt weder verschachtelte if-Anweisu...
Zunächst müssen Sie verstehen, warum Sie Verbindu...
Inhaltsverzeichnis 1. Wissensbeschreibung der dre...
Inhaltsverzeichnis 1. Vorbereitung vor der Entwic...
Lernprogramm zum Erlernen von Listen-Tags für HTML...
Fehlermeldung: FEHLER 2002 (HY000): Verbindung zu...