einfache Update-Abfrage dauert sehr lange in MySQL ausgeführt werden

9

Ich habe das langsame Abfrageprotokoll von MySQL überprüft und einen Eintrag wie folgt gefunden:

%Vor%

Wie Sie sehen können, dauerte die Ausführung dieser Abfrage unglaubliche 14,72 Sekunden, wenn es sich um ein einfaches Update mit nur einem WHERE nach Primärschlüssel handelt. Ich habe versucht, die Abfrage erneut auszuführen, aber jetzt wird in 0,095 Sekunden ausgeführt, was viel sinnvoller ist.

Irgendwelche Ideen, wie ich debuggen kann, warum zu dieser bestimmten Zeit hat es so lange gedauert?

Bearbeiten Sie 1: query_cache% Variablen

%Vor%

Bearbeiten 2: Künstlertischinfo

%Vor%     
Karl Cassar 08.11.2013, 08:36
quelle

3 Antworten

1

Angesichts der von Ihnen angegebenen Ausgabe wäre mein Vorschlag hier, die Cache-Größe zu minimieren. Es ist natürlich nur meine beste Annahme, dass dies dazu führte, dass sich die Aktualisierungszeit über 15 Sekunden erstreckte, da die Abfrage selbst mit WHERE auf PRIMARY KEY optimal ist.

Da Sie das Problem nicht reproduzieren konnten, ist es schwer zu bestimmen.

Ich habe die Cache-Dokumentation erneut gelesen, um Informationen zu erhalten.

  

Wenn Tabellen geändert werden, werden alle relevanten Einträge im Abfrage-Cache geleert.   Dies könnte ein Grund für das Update sein, dass Sie zwischengespeicherte Daten löschen mussten.

Ein weiterer Teil der Dokumentation

  

Seien Sie vorsichtig, wenn Sie den Abfragecache zu groß dimensionieren, was   erhöht den Overhead, der erforderlich ist, um den Cache möglicherweise darüber hinaus zu erhalten   der Vorteil, es zu ermöglichen. Größen in Zig Megabyte sind normalerweise   vorteilhaft. Größen in den Hunderten von Megabyte möglicherweise nicht.

Wie auch immer, da Sie den Abfrage-Cache aktiviert haben, denke ich, dass das ein guter Ausgangspunkt ist.

Zum Festlegen eines neuen Abfragecaches während der Produktion

%Vor%

Mysql wird die Größe automatisch auf den nächsten 1024-Byte-Block ausrichten.

Lesen Sie diese Dokumentation gut, es ist sehr hilfreich zu verstehen. Der Query-Cache kann gleichzeitig die beste und schlechteste Einstellung sein.

Ссылка

    
Kay Nelson 11.11.2013 10:11
quelle
0

Es gibt ein Problem mit Ihrem Tisch. Sie haben mehrere Indizes für die Tabelle erstellt, die Felder enthält, die Sie in der SQL aktualisieren. Dann muss mysql den Index jedes Mal neu aufbauen.

    
user2963713 15.11.2013 07:15
quelle
0

Ich denke, Sie haben MySQL-Server-Variablen nicht angepasst. Es ist wichtig, Servervariablen zu optimieren, um die Leistung zu erhöhen. Es wird empfohlen, sich die Variablen key_buffer_size und table_cache anzusehen.

Die Variable key_buffer_size steuert die Größe des für den MySQL-Indexpuffer verfügbaren Speichers. Je höher dieser Wert ist, desto mehr Speicher ist für Indizes verfügbar und die Leistung wird verbessert.

Die Variable table_cache steuert die Größe des für den Tabellencache verfügbaren Speichers und damit die Gesamtzahl der Tabellen, die MySQL zu einem bestimmten Zeitpunkt offen halten kann. Für ausgelastete Server mit vielen Datenbanken und Tabellen sollte dieser Wert erhöht werden, damit MySQL alle Anfragen zuverlässig bedienen kann.

    
quelle

Tags und Links