Ich brauche etwa 400 Zeilen aus der MySQL-Tabelle mit Spalten löschen:Warum blockiert das Löschen vieler BLOBs die MySQL-Datenbank mit dem Status: Erzwingen des Dict-Cache-Limits?
id - INT(11) training_id - INT(11) estimator_blob - LONGBLOB
Die Größe estimator_blob
ist 32 MB.
Es scheint, dass eine Abfrage wie folgt:
DELETE FROM estimator WHERE training_id IN (1, 2, ..., 400);
die Datenbank sperrt. Nach dem Ausführen dieser Abfrage werden alle neuen Abfragen, die Ergebnisse in diese Tabelle einfügen, extrem langsam ausgeführt.
In dem Status der Datenbank (mysql> SHOW ENGINE INNODB STATUS;
) Ich habe diese Nachricht:
Process ID=2600, Main thread ID=139974149678848, state: enforcing dict cache limit
Was genau bedeutet "dict Cache-Grenze durchzusetzen"? Ist das der Grund für dieses "Schloss"?
Erhöhung der innodb_buffer_pool_size
hat nicht geholfen.
Ich benutze MySQL 5.7.19-0ubuntu0.16.04.1 auf der Maschine mit 70 GB RAM.
ist trainings_id indiziert? Sie könnten auch versuchen, * erhöhen die Gesamtzahl der Dateizugriffsnummern für MySQL verfügbar * Erhöhung der Anzahl der Datei behandelt für InnoDB –
Ja, ist es. Eigentlich ist es ein Fremdschlüssel und ich benutze 'ON DELETE CASCADE' nicht. OK, ich werde es versuchen. Vielen Dank! –