SQL Prozessdauer zu hoch!?

Hattrix

Cadet 4th Year
Registriert
März 2007
Beiträge
111
Hallo,

und zwar habe ich heute bei phpMyAdmin mit MySQL5 die Prozesse angeschaut. Dabei kommt es immer wieder mal vor, dass ein bis zwei Prozesse weit über 10 Sekunden gehen, auch mal bis 60.

Woran liegt das?
DB dadurch mehr ausgelastet?
 
Ja das lastet deine DB aus...
Dein Problem kann mehrere Grüne haben:
1) Du hast sehr viele Einträge in deiner Tabelle und keinen Index drauf
2) Du machst 10 Joins in 1 Abfrage
3) Deine Abfragen sind nicht performant und du selektierst immer alle Spalten bzw. mehr als nötig

Und so weiter...


Bei welchem Prozess dauert das denn so lange bzw. was für ein sql Statement auf wie viele Tabellen, Einträge...
 
Welchen Status haben die Prozesse?
Welchen Umfang haben Deine Tabellen?
Wie oft werden Anfragen gestellt?
Wie sehen Deine Anfragen in der Regel aus - wie komplex sind die Anfragen?
Werden die Daten zu einer anderen Maschine übertragen oder nur lokal genutzt?
Wieviel Verbunde werden durchschnittlich gemacht?
Können Deine Verbunde durch Indizes beschleunigt werden?

Die Statistik-Seite von phpma ist sehr aussagekräftig und gibt sogar Optimierungsvorschläge, wie durch Konfigurationsänderungen mehr Leistung erzielt werden könnte.
Die Queries mit EXPLAIN SELECT ... analysieren und ggf. optimieren.
Notfalls log_slow_queries aktivieren (http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html)
 
XunnD schrieb:
Welchen Status haben die Prozesse?
In der MySQL-DB steht da nur "---", sowie auch beim SQL-Statement.
XunnD schrieb:
Welchen Umfang haben Deine Tabellen?
Ich selektiere nur die Spalten, die ich brauch.
XunnD schrieb:
Wie oft werden Anfragen gestellt?
Bei jedem Seitenaufruf. Im Schnitt 10-20.
XunnD schrieb:
Wie sehen Deine Anfragen in der Regel aus - wie komplex sind die Anfragen?
Ziemlich einfach. Meist keine JOIN, keine SUBSELECTS ... nur sehr wenige sind mit JOINs.
XunnD schrieb:
Werden die Daten zu einer anderen Maschine übertragen oder nur lokal genutzt?
Nein.
XunnD schrieb:
Wieviel Verbunde werden durchschnittlich gemacht?
Mit der Frage weiß ich leider nichts anzufangen. :(
XunnD schrieb:
Können Deine Verbunde durch Indizes beschleunigt werden?
Ich habe Indizes gesetzt.
 
Wenn die Prozesse auf SLEEP (bzw. die Befehle auf '---') stehen, verbrauchen diese keine CPU-Last, sondern warten nur auf neue Befehle.

Verbund ist das deutsche Wort zu 'Join'.

Mit Tabellen-Umfang meine ich die Anzahl Einträge der Tabellen, die abgefragt werden. Vollständige Tabellen-Scans können auch ein Grund für langsame Abfragen sein.

Werden die Indizes richtig ausgenutzt? (mit Operatoren arbeiten - LIKE '%...%' macht nicht vom Index Gebrauch, LIKE '...%' schon)

'Wieviele Verbunde' heißt: wieviele Joins werden durchschnittlich pro Abfrage gemacht - wie sind die Schlüsselbeziehungen: entsteht dabei ein Kreuzprodukt mit m*n Zeilen oder nur wieder mit m Zeilen?
 
XunnD schrieb:
Wenn die Prozesse auf SLEEP (bzw. die Befehle auf '---') stehen, verbrauchen diese keine CPU-Last, sondern warten nur auf neue Befehle.
Danke, dass ist die Antwort auf meine Frage und beruhigt mich sehr. ;)
 
Zurück
Oben