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“
Arbeitsmodus von vim einstellen (vorübergehend) :...
Warum steckt es fest? Es gibt eine Prämisse, die ...
In Vue können wir lokale Komponenten selbst defin...
Inhaltsverzeichnis Semaphor Nginx-Hot-Bereitstell...
Der ps-Befehl in Linux ist die Abkürzung für „Pro...
Dieser Artikel enthält das ausführliche Tutorial ...
GitHub bietet alle möglichen magischen Tools. Heu...
Hier sind einige Probleme, die bei der Verwendung...
Wenn sich die Daten ändern, wird die DOM-Ansicht ...
Vorwort In der Praxis kann es zu folgendem Proble...
Dieser Artikel veranschaulicht anhand von Beispie...
brauchen Vor Kurzem mussten wir die Node-Onlinedi...
Da Ubuntu 20.04 das Netzwerk über Netplan verwalt...
In diesem Artikel zeigt Ihnen der Blogger die häu...
Ich hatte in letzter Zeit ziemlich viel Zeit. Ich...