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“
Vor einiger Zeit hat der Blogger das Ubuntu-Syste...
1. Erstellen Sie ein Shell-Skript vim backupdb.sh...
Lernpläne werden leicht unterbrochen und es ist s...
** Installieren Sie mysql-8.0.20 unter Linux ** U...
Ubuntu erlaubt standardmäßig keine Root-Anmeldung...
1. Befehlseinführung Der Befehl ifconfig (Netzwer...
MySQL ist eine kostenlose relationale Datenbank m...
1) Einführung in den Cache-Mechanismus Um die Lei...
Vorwort Wenn Docker Run einen Container erstellt ...
Installieren Sie MySQL unter Windows zu Ihrer Inf...
Bei diesem Thema handelt es sich um einen interne...
Dieser Artikel erläutert anhand von Beispielen di...
Nachdem ich das System heute neu installiert hatt...
Inhaltsverzeichnis 1. Warteschlangen verstehen 2....
Inhaltsverzeichnis Schritt 1: Pakete unter CentOS...