So sperren Sie Tische in MySQL
Verwenden Sie Schlosstische, um Tische manuell zu sperren. Das Leseschloss ermöglicht es mehr, mehrere Sitzungen zu lesen, aber nicht geschrieben werden kann. Die Schreibschloss enthält exklusive Lesen- und Schreibberechtigungen für die aktuelle Sitzung und andere Sitzungen können nicht lesen und schreiben. 2. Die Verriegelung ist nur für die aktuelle Verbindung. Die Ausführung von Start -Transaktion und andere Befehle wird implizit die Sperre freigeben. Nach dem Sperren kann es nur auf den verschlossenen Tisch zugreifen. 3. Verwenden Sie nur in bestimmten Szenarien wie MYISAM -Tabellenwartung und Datensicherung. InnoDB sollte Transaktions- und Zeilenebenesperrungen wie SELECT ... für das Update priorisieren, um Leistungsprobleme zu vermeiden. 4. Nach Abschluss des Betriebs müssen die Entsperren von Tabellen ausdrücklich freigegeben werden, da ansonsten eine Ressourcenblockade auftreten kann.
Das Sperren von Tabellen in MySQL ist eine Möglichkeit, den Zugriff auf Tabellendaten während bestimmter Vorgänge zu steuern, insbesondere in MYISAM und anderen Speichermotoren, die keine Verriegelung auf Reihenebene unterstützen. Während InnoDB standardmäßig Schlösser auf Zeilenebene verwendet und effizienter mit Gleichzeitverläufern behandelt wird, ist die Tabellenverriegelung in bestimmten Szenarien weiterhin relevant.

Hier erfahren Sie, wie Sie Tabellen in MySQL sperren:
1. Verwenden von LOCK TABLES
und UNLOCK TABLES
MySQL stellt die Anweisung LOCK TABLES
zur Verfügung, um einen oder mehrere Tabellen für die aktuelle Sitzung manuell zu sperren. Diese Schlösser verhindern, dass andere Sitzungen je nach Sperrtyp die Tabellen ändern oder lesen.

Syntax:
Sperrtische table_name [als alias] read | SCHREIBEN [, table_name read | SCHREIBEN]...;
Nach dem Sperren müssen Sie die Schlösser veröffentlichen mit:
Tische entsperren;
Arten von Schlössern:
Lesen Sie die Sperre (
LOCK TABLES table_name READ
):- Ermöglicht die Sitzung, die Tabelle zu lesen, aber nicht darauf schreiben.
- Andere Sitzungen können immer noch die Tabelle lesen, können sie jedoch nicht schreiben, bis das Schloss veröffentlicht wird.
- Mehrere Sitzungen können gleichzeitig ein Leseschloss auf derselben Tabelle enthalten.
Schreiben Sie Sperre (
LOCK TABLES table_name WRITE
):- Zuschüsse exklusiver Zugriff: Nur die Sperrensitzung kann die Tabelle lesen oder schreiben.
- Keine andere Sitzung kann die Tabelle lesen oder schreiben, bis das Schloss veröffentlicht wird.
- Hat eine höhere Priorität als Lesen von Schlössern.
Beispiel:
Sperren Tabellen, die Benutzer schreiben; Aktualisieren Sie Benutzer last_login = Now (), wobei ID = 1; Tische entsperren;
Dadurch wird sichergestellt, dass keine andere Sitzung die users
während des Updates beeinträchtigt.
2. Wichtige Notizen und Best Practices
Schlösser sind verbindungsspezifisch :
Die Tabellensperrungen gelten nur für die aktuelle Datenbankverbindung. Das Schließen der Verbindung oder das AusführenUNLOCK TABLES
freisetzt sie.InnoDB und Auto-Commit :
Wenn Sie InnoDB verwenden, vermeiden SieLOCK TABLES
es sei denn, dies ist unbedingt erforderlich. InnoDB verarbeitet die Parallelität mit Schlössern auf interner Reihenebene und MVCC (Mehrfachversionskontrolle). Die VerwendungLOCK TABLES
in InnoDB kann die Transaktionsintegrität beeinträchtigen.Sie können nach
LOCK TABLES
nicht auf nicht gesperrte Tische zugreifen :
Sobald Sie eine Tabelle gesperrt haben, kann Ihre Sitzung nur auf die gesperrten Tische zugreifen. Jeder Versuch, auf eine entsperrte Tabelle zuzugreifen, führt zu einem Fehler.Implizite Entsperren :
ALTER TABLE
BefehleROLLBACK
START TRANSACTION
COMMIT
3.. Wann verwendet Tischschlösser
Die Tischverriegelung wird in diesen Fällen hauptsächlich verwendet:
- Leistungswartung auf MyISAM -Tischen.
- Migrieren oder Sichern von Daten mit konsistenten Lesevorgängen.
- Implementierung der Logik der Anwendungsebene (selten).
Für die meisten modernen Anwendungen mit InnoDB sollten Sie sich darauf verlassen:
- Transaktionen (
BEGIN
,COMMIT
,ROLLBACK
) - Sperren auf Zeilenebene über
SELECT ... FOR UPDATE
oderSELECT ... LOCK IN SHARE MODE
Beispiel für das Sperren im InnoDB-Stil (bevorzugt):
Transaktion starten; Wählen Sie * aus Konten, wobei user_id = 1 für das Update; - Daten sicher ändern Aktualisieren Sie die Konten SET STALL = Saldo - 100 wobei user_id = 1; BEGEHEN;
Dies sperrt nur die betroffenen Reihen, nicht die gesamte Tabelle.
Zusammenfassung
- Verwenden Sie
LOCK TABLES table READ/WRITE
um Tabellen manuell zu sperren. - Rufen Sie immer
UNLOCK TABLES
an, um Schlösser zu veröffentlichen. - Vermeiden Sie Tischschlösser in InnoDB; Bevorzugen Sie die Verriegelung auf Reihenebene über Transaktionen.
- Tabellenschlösser sind grobkörnig und können die Leistung in Umgebungen mit hoher Konsequenz beeinträchtigen.
Verwenden Sie im Grunde nur LOCK TABLES
, wenn Sie sicher sind, dass Sie es benötigen-wie bei nicht-transaktionalen Motoren oder sehr spezifischen Konsistenzanforderungen.
Das obige ist der detaillierte Inhalt vonSo sperren Sie Tische in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Stock Market GPT
KI-gestützte Anlageforschung für intelligentere Entscheidungen

Clothoff.io
KI-Kleiderentferner

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

B-treeIndexesarebestFormOstPhpapplications, als Theysupportequality und RangeQueries, Sorting und saridealforcolumnSusedinwhere, Join, ORORDBYCLAUSS;

Sie können das Trennzeichen mit dem Schlüsselwort des Separators in der Funktion Group_Concat () anpassen. 1. Verwenden Sie einen Trennzeichen, um einen benutzerdefinierten Trennzeichen wie Trennzeichen anzugeben. 'Der Trennzeichen kann in ein Semikolon und plus Raum geändert werden. 2. Häufige Beispiele sind die Verwendung des Rohrzeichens '|', Space '', Line Break-Zeichen '\ n' oder benutzerdefinierte Zeichenfolge '->' als Trennzeichen; 3.. Beachten Sie, dass das Trennzeichen ein Zeichenfolge oder ein Ausdruck von String sein muss und die Ergebnislänge durch die Variable gruppe_concat_max_len begrenzt wird, die durch setSessionGroup_concat_max_len = 10000 eingestellt werden kann; 4. Separator ist optional

UnionRemovesduplicate whileunionAllekeepsallrowsincludingDuplikate; 1.unionperformSETUPLICINGBYSORTINGANDANDAWROWS, RETATIONALE DER ANGEBOTEN, WO DER MEITSSITSSITSSITSSITSSITSSITSSITSSITSSSITSSSITSSSITSENSLOWERONLARGEDATASETSETENTEN;

Die Tabelle kann manuell mit Locktables gesperrt werden. Das Leseschloss ermöglicht es mehr, mehrere Sitzungen zu lesen, aber nicht geschrieben werden kann. Die Schreibschloss enthält exklusive Lesen- und Schreibberechtigungen für die aktuelle Sitzung und andere Sitzungen können nicht lesen und schreiben. 2. Das Schloss ist nur für die aktuelle Verbindung. Die Ausführung von StartTransaction und anderen Befehlen wird das Schloss implizit freigeben. Nach dem Sperren kann es nur auf den verschlossenen Tisch zugreifen. 3. Verwenden Sie es nur in bestimmten Szenarien wie MyISAM -Tabellenwartung und Datensicherung. InnoDB sollte der Verwendung von Transaktions- und Zeilenebenen wie Select ... Forupdate Priorität geben, um Leistungsprobleme zu vermeiden. V.

Um Daten aus der MySQL -Tabelle auszuwählen, sollten Sie die SELECT -Anweisung verwenden, 1. Verwenden Sie SelectColumn1, Spalte2FromTable_Name, um die angegebene Spalte zu erhalten, oder verwenden Sie SELECT*, um alle Spalten zu erhalten. 2. Verwenden Sie, wo Klausel zum Filtern von Zeilen wie SelectName, Altersfromusterwuchs> 25; 3.. Verwenden Sie OrderBy, um die Ergebnisse zu sortieren, wie z. B. OrderByagedesc, was absteigender ordentlicher Alter darstellt. V. 5. Verwenden und, oder Klammern, um zu kombinieren, um zu kombinieren

Ifnull () inmysqlreturnStheFirStexpressionifitisnotnull, andere WisereturnStheSecondexpression, MakingIdeAlforreplaccaceNullvalues withdefaults; Forexample, ifnull (Middle_Name, 'n/a') disponculations-/a'dhensclysclyscelclyculations- und A'dhenmiddle_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name_name, ifnull (diskont/a'dhensname_name_name_name_name_nAnname, idnull, 0)

Verwenden Sie die DropView -Anweisung, um eine Ansicht in MySQL zu löschen. 1. Die grundlegende Syntax ist dropviewView_name; 2. Wenn Sie nicht sicher sind, ob die Ansicht vorhanden ist, können Sie dropviewifexistsView_name verwenden, um Fehler zu vermeiden. 3.. Sie können mehrere Ansichten gleichzeitig über DropViewifexistsView1, View2, View3 löschen. Der Löschvorgang beseitigt nur die Ansichtsdefinition und wirkt sich nicht auf die zugrunde liegenden Tabellendaten aus. Sie müssen jedoch sicherstellen, dass keine anderen Ansichten oder Anwendungen auf der Ansicht angewiesen sind, da ansonsten ein Fehler verursacht werden können und der Vollstrecker eine Abfallberechtigungen haben muss.

ThelikeoperatorinMysqlisusedToSearchForpatternSintentextDatAusingwildcards; 1. Verwenden Sie%tomatchAnysequenceFcharacctersandtomatchasingle Charakter; 2. Feurample, 'John%' findsnamessTartingwithjohn, '%Son'findsnamesendingwithson,'%ar%'findsnamescontainingar, \ _ \ _ \ _ \ _ \ _ \ _ \ _
