Thread-Stack-Überlauf: Fehler 1436 in MySQL
Fehlerbeschreibung
MySQL-Fehler 1436, ER_STACK_OVERRUN_NEED_MORE, weist auf einen Thread-Stack-Überlauf hin. Dieser Fehler tritt auf, wenn ein Thread versucht, mehr Stapelspeicher zu verwenden, als verfügbar ist, typischerweise während der Ausführung komplexer Abfragen oder Trigger.
Ursache
Die primäre Ursache für Fehler 1436 ist eine unzureichende Thread-Stapelgröße. Die Standard-Thread-Stack-Größe ist normalerweise auf 128 KB (131072 Bytes) eingestellt, kann aber in der my.cnf-Konfigurationsdatei konfiguriert werden.
Analyse der Fehlerdetails
Die Fehlermeldung enthält die folgenden Details:
-
1436: Die Fehlernummer.
-
Thread-Stack: Der verwendete Speicherbereich zum Speichern lokaler Variablen und Funktionsparameter während der Thread-Ausführung.
-
Überlauf: Der Stapel wurde überschritten.
-
6136 verwendete Bytes: Die Menge an Stapelspeicher, der zum Zeitpunkt des Fehlers verwendet wurde.
-
131072 Byte-Stack: Die Gesamtgröße des Thread-Stacks.
-
128000 Bytes benötigt: Die Menge an Stapelspeicher, die für den aktuellen Thread-Vorgang erforderlich ist.
Bestimmen der Thread-Stack-Quelle
Um festzustellen, woher der Thread-Stack-Wert kommt :
- Überprüfen Sie die Konfigurationsdatei my.cnf auf explizite Thread_Stack-Einstellungen.
- Verwenden Sie die Tabelle performance_schema.variables_info, um die Spalte VARIABLE_SOURCE nach der Variablen „thread_stack“ abzufragen. Dadurch wird angezeigt, ob der Wert aus der kompilierten Binärdatei, einer Konfigurationsdatei oder einer dynamischen Einstellung stammt.
Lösung
Um Fehler 1436 zu beheben , erhöhen Sie die Thread-Stapelgröße, um den Speicheranforderungen des Thread-Vorgangs gerecht zu werden. Dies kann erreicht werden durch:
-
Ändern der my.cnf-Datei:Setzen Sie den Parameter „thread_stack“ auf einen höheren Wert, normalerweise 256 KB oder höher.
- Dynamisches Anpassen der Thread-Stapelgröße:Verwenden Sie die benutzerdefinierte Variable „thread_stack“, um eine bestimmte Stapelgröße für einzelne Verbindungen festzulegen.
-
Optimierung der Abfrage oder des Triggers: Reduzieren Sie die Stapelnutzung der Abfrage oder des Triggers, indem Sie sie optimieren und ihre Komplexität reduzieren.
-
Bestimmen, ob ein benutzerdefinierter Build von MySQL verwendet wurde: Wenn der Fehler in einem benutzerdefinierten Build auftritt, überprüfen Sie dies Die Standard-Thread-Stapelgröße wurde während des Kompilierungsprozesses nicht geändert.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehler 1436: „Thread Stack Overrun'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!