Extrem langsam Wählen Sie Abfrage für MySQL

8

Ich versuche zu verstehen, warum eine ausgewählte Abfrage extrem schnell auf meinem Laptop läuft, während sie auf dem Server extrem langsam ist. Die Abfrage dauert 1.388 Sekunden, um auf dem Laptop ausgeführt zu werden,% 49.670 Sekunden auf dem Server. Beide Schemas sind identisch, da ich das Schema vom Laptop exportiert und in den Server importiert habe. Beide laufen mit MySQL 5.1.36 auf WAMP 2.0.

SQL-Dump

Ссылка

Abfrage

%Vor%

EXPLAIN EXTENDED - SERVER

%Vor%

EXPLAIN EXTENDED - LAPTOP

%Vor%

Modell

Laptop Spezifikationen

Betriebssystem: Microsoft Windows 7 Professional, Prozessor: Intel® Core ™ i7-4600M Prozessor (4M Cache, bis zu 3,60 GHz), Arbeitsspeicher: 8 GB

Serverspezifikationen

Betriebssystem: Microsoft Windows 2008 Standard SP2, Prozessor: Intel® Xeon® Prozessor X5570 (8 MB Cache, 2.93 GHz, 6.40 GT / s Intel® QPI), Arbeitsspeicher: 4 GB

Fehlerbehebung

1. Die Engines für alle Tabellen in beiden Datenbanken wurden von InnoDB auf MyISAM mit Optimierung geändert. Es dauerte 89.435 Sekunden auf dem Server und 57.252 Sekunden auf dem Laptop zu laufen. Laptop ist immer noch schneller, extrem langsam im Vergleich zu 1.388 Sekunden Abfragezeit mit InnoDB-Engine.

    
AlGallaf 20.01.2015, 08:29
quelle

5 Antworten

4

Die Daten (nicht das Schema) unterscheiden sich zwischen Laptop und Server?

Die Erklärung zeigt, dass die Tabelle section alle Zeilen auf dem Server auswählt und nicht nur eine wie auf dem Laptop.

Außerdem wird Using temporary; Using filesort auf dem Server angezeigt: das könnte die Ursache des Problems sein.

    
Jean 20.01.2015 09:07
quelle
3

Vielleicht werden die Indizes in Ihrer Tabelle nicht neu erstellt, nachdem die Datenbank von einem Rechner auf den anderen übertragen wurde (das habe ich schon einmal erlebt). Sie müssen MySQL manuell mitteilen, dass der Index neu erstellt werden soll. Wenn ich mich richtig erinnere könnte man das so mit einer OPTIMIZE Abfrage

OPTIMIZE TABLE your_table

Das Nichtvorhandensein eines Indexes kann Ihre Abfrage erheblich verlangsamen, obwohl der Unterschied, den Sie feststellen, möglicherweise zu groß ist, um mit diesem Problem erklärt zu werden. Wie könnten Sie in den vorherigen Kommentaren Ihre Tabellen / Abfragen posten?

    
lordphnx 14.01.2015 08:53
quelle
1

Die Dinge skalieren absolut nicht linear in einer Datenbank. Ich habe einmal eine Abfrage geändert, die viele Berechnungen enthielt, indem ich 7% der ursprünglichen Tabelle mit einer zusätzlichen Klausel im Where-Part vorselektierte. Das Ergebnis war nicht eine Steigerung der Geschwindigkeit von etwa 15 mal, sondern mehr als 3000 mal!

(Ich vermute, dass das DBMS plötzlich in der Lage war, die Tabelle vollständig im Speicher zu speichern)

Wie auch immer; Sie können versuchen, einen Profiler zu verwenden, um die tatsächliche Abfrage zu sehen, die auf beiden Systemen ausgeführt wird, und die Zeiten, die die verschiedenen Schritte dauern. Wenn nicht falsch, gibt es Profiler für MySQL.

    
incomudro 20.01.2015 09:35
quelle
1

Das Hauptproblem Ihrer Abfrage ist, dass Sie zu viele nutzlose convert using utf-8 (für id und datetime) verwendet haben, entfernen Sie einfach alle Ihre Converts, ich kann Ihre Abfrage in meinem Laptop weniger als 1s (vor dem Entfernen, es dauert mehr als 30s, und ich habe nicht geduldig, mehr zu warten, einfach zu stoppen)

%Vor%     
Hieu Vo 26.01.2015 04:19
quelle
1

Ich kann keine Kommentare hinzufügen, also werde ich meine zwei Cent als Antwort hineinwerfen. Dies gilt nur, wenn Sie den Server nicht besitzen und ihn für andere Dienste freigeben. Laptop, Single-Disk-Spinning mit allen Aufzeichnungen auf der Platte nett und ordentlich. Die DB ist das einzige, das Ressourcen verwendet.

Server, Shared Services, SAN oder RAID-Datenträger, Dateien befinden sich nicht auf einem einzigen Plattenteller und Sie konkurrieren um Ressourcen. Wenn Sie Zugriff haben, überprüfen Sie Ressourcen wie die CPU-Auslastung, während Sie Ihre Abfrage ausführen. Wenn Sie diesen Server mit anderen teilen, haben Sie wahrscheinlich nur so viel Prozessor-Ressource und RAM, um Ihre Abfrage durchzuführen. Während Ihre Server-Spezifikationen beeindruckend sind, teilen geteilte Umgebungen jeder Partei ein paar Ressourcen.

In diesem Fall ist Ihr Laptop das leistungsfähigere Gerät. Bitten Sie Ihren Systemadministrator um weitere Ressourcen.

    
Carl 28.01.2015 23:45
quelle

Tags und Links