Auswählen von Daten ohne Sperrung in MySQL
Beim Abfragen einer Tabelle, die aktiv durch Ereignisse geändert wird, kann es zu Tabellensperren kommen, die dazu führen können Schlagleistung. Gibt es eine Möglichkeit, eine Select-Anweisung in MySQL auszuführen, die solche Sperren nicht verursacht?
Lösung für Slave-Datenbanken
Die im Artikel mit dem Titel „MYSQL WITH „NOLOCK“ ist in diesem Fall nicht anwendbar, da es sich um eine Slave-Datenbank handelt. Darüber hinaus führt das Festlegen der Transaktionsisolationsstufe auf READ-UNCOMMITTED zu einem Fehler in einer Slave-Datenbank, die für die STATEMENT-basierte binäre Protokollierung konfiguriert ist.
MySQL-spezifische Methodik
Um Sperren beim Auswählen von Daten in einer MySQL-Slave-Datenbank zu vermeiden, können Sie den folgenden Ansatz verwenden:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT COUNT(online.account_id) cnt from online; COMMIT;
Diese Methode legt die Transaktion vorübergehend fest Setzen Sie die Isolationsstufe auf READ UNCOMMITTED, wodurch die Select-Anweisung ohne Sperren fortgesetzt werden kann. Es ist jedoch wichtig zu bedenken, dass diese Einstellung nur innerhalb einer Transaktion mit einer nachfolgenden COMMIT-Anweisung verwendet werden kann.
Verbesserungsvorschlag
Alternativ können Sie die Verwendung in Betracht ziehen die folgende von Michael Mior vorgeschlagene Syntax:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT COUNT(online.account_id) cnt from online; COMMIT;
Das obige ist der detaillierte Inhalt vonWie wähle ich Daten aus einer MySQL-Slave-Datenbank aus, ohne sie zu sperren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!