Inhaltsverzeichnis
Syntax:
Arten von Schlössern:
Beispiel:
2. Wichtige Notizen und Best Practices
3.. Wann verwendet Tischschlösser
Beispiel für das Sperren im InnoDB-Stil (bevorzugt):
Zusammenfassung
Heim Datenbank MySQL-Tutorial So sperren Sie Tische in MySQL

So sperren Sie Tische in MySQL

Aug 15, 2025 am 04:04 AM
mysql Sperrtabelle

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.

So sperren Sie Tische in MySQL

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.

So sperren Sie Tische in MySQL

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.

So sperren Sie Tische in MySQL

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 ):

    So sperren Sie Tische in MySQL
    • 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ühren UNLOCK TABLES freisetzt sie.

  • InnoDB und Auto-Commit :
    Wenn Sie InnoDB verwenden, vermeiden Sie LOCK TABLES es sei denn, dies ist unbedingt erforderlich. InnoDB verarbeitet die Parallelität mit Schlössern auf interner Reihenebene und MVCC (Mehrfachversionskontrolle). Die Verwendung LOCK 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 Befehle ROLLBACK 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 oder SELECT ... 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!

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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Stock Market GPT

Stock Market GPT

KI-gestützte Anlageforschung für intelligentere Entscheidungen

Clothoff.io

Clothoff.io

KI-Kleiderentferner

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)

Erläutern Sie die Datenbank-Indexierungsstrategien (z. B. B-Tree, Volltext) für eine MySQL-unterstützte PHP-Anwendung. Erläutern Sie die Datenbank-Indexierungsstrategien (z. B. B-Tree, Volltext) für eine MySQL-unterstützte PHP-Anwendung. Aug 13, 2025 pm 02:57 PM

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

So ändern Sie das Gruppen -Trennzeichen in MySQL So ändern Sie das Gruppen -Trennzeichen in MySQL Aug 22, 2025 am 10:58 AM

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

Was ist der Unterschied zwischen Union und Union in MySQL? Was ist der Unterschied zwischen Union und Union in MySQL? Aug 14, 2025 pm 05:25 PM

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

So sperren Sie Tische in MySQL So sperren Sie Tische in MySQL Aug 15, 2025 am 04:04 AM

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.

Wie wähle ich Daten aus einer Tabelle in MySQL aus? Wie wähle ich Daten aus einer Tabelle in MySQL aus? Aug 19, 2025 pm 01:47 PM

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

Wie benutze ich Ifnull () in MySQL? Wie benutze ich Ifnull () in MySQL? Aug 22, 2025 pm 02:00 PM

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)

So lassen Sie eine Ansicht in MySQL ab So lassen Sie eine Ansicht in MySQL ab Aug 14, 2025 pm 06:16 PM

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.

So verwenden Sie den gleichen Operator in MySQL So verwenden Sie den gleichen Operator in MySQL Aug 22, 2025 am 12:23 AM

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

See all articles