Schritte zur Fehlerbehebung bei MySQL-Deadlocks

Verzeichnis der Serienartikel

Kapitel 1: sql_mode Kapitel
2: Tabelle optimieren, Tabelle analysieren, Tabelle ändern, Ghost Kapitel 3
: InnoDB MVCC-Prinzip
Kapitel 4: Ausführungsprozess für SQL-Anweisungen
Kapitel 5: Einführung in das Percona-Toolkit
Kapitel 6: MySQL-Index Kapitel
7: MySQL-Sperre
Kapitel 8: MySQL-Sperranalyse
Kapitel 9: Schritte zur Fehlerbehebung bei MySQL-Deadlocks



Vorwort

MySQL-Deadlock tritt gelegentlich online oder in der Entwicklungsumgebung auf. Sie können die folgenden Methoden verwenden, um das Deadlock-Problem zu beheben.

1. Online-Umgebung

1. Zeigen Sie die letzte Deadlock-Situation an

show engine innodb status\G

Bildbeschreibung hier einfügen
Die gesperrte Anweisung kann basierend auf der ausgeführten SQL rückgängig gemacht werden.

2. Fehlerprotokoll

Ändern oder erweitern Sie die Konfiguration in der Datei /etc/my.cnf, achten Sie auf die hinzugefügte Position unter [mysqld], sonst wird sie ungültig;

innodb_print_all_deadlocks = ON

Der Pfad des Fehlerprotokolls kann über die folgende SQL angezeigt werden:

SHOW VARIABLES LIKE 'log_error';

Auf diese Weise können Sie mysql-Deadlocks durch Fehlerprotokollanalyse beheben

2. Entwicklungsumgebung

1. Wenn ein Deadlock auftritt

SELECT
    a.trx_id,
    d.SQL_TEXT,
    a.trx_state,
    a.trx_started,
    a.trx_query,
    b.ID,
    b.USER,
    b.DB,
    b.COMMAND,
    b.TIME,
    b.STATE,
    b.INFO,
    c.PROCESSLIST_USER,
    c.PROCESSLIST_HOST,
    c.PROCESSLIST_DB 
FROM
    information_schema.INNODB_TRX a
    LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id 
    LEFT JOIN PERFORMANCE_SCHEMA.threads c ON b.id = c.PROCESSLIST_ID
    LEFT JOIN PERFORMANCE_SCHEMA.events_statements_current d ON d.THREAD_ID = c.THREAD_ID;

Sie können die Anweisungen sehen, die derzeit auf Sperren warten.
Bildbeschreibung hier einfügen

2. Analysieren Sie den Verriegelungsbereich

SELECT ENGINE,ENGINE_TRANSACTION_ID,THREAD_ID,EVENT_ID,OBJECT_SCHEMA,OBJECT_NAME,INDEX_NAME,LOCK_TYPE, LOCK_MODE,LOCK_STATUS,LOCK_DATA FROM performance_schema.data_locks;

Bildbeschreibung hier einfügen

Supongo que te gusta

Origin blog.csdn.net/ruoshui77/article/details/127330093
Recomendado
Clasificación