Die folgende Queries (und davon habe ich mehrere) arbeiten eigentlich ziemlich schnell.
Durch Indizierung habe ich erreicht, daß von den abgearbeiteten Zeile 90% Treffer sind, zudem sind es ja nicht gerade viele Zeilen...
SELECT m.*, c.header, u.id AS userID FROM mail m, mailContent c, userm u LEFT JOIN crossb b ON (b.userID=1 AND b.userTo=u.id) WHERE m.toID=1 AND (m.status=1 OR m.status=2 OR m.status=4 OR m.status=6) AND u.id=m.fromID AND m.contentId=c.id AND u.memberMode!=9 AND (b.status != 2 OR b.status IS NULL)
table type possible_keys key key_len ref rows Extra
m ref fromID,toID toID 5 const 128 Using where
c eq_ref PRIMARY PRIMARY 4 m.contentId 1
u eq_ref PRIMARY PRIMARY 4 m.fromID 1 Using where
b eq_ref PRIMARY PRIMARY 8 const,u.id 1 Using where
Anzahl Abfragen = 128
Nun ist mein Problem, sobald ziemlich viel Last auf die Datenbank kommt, dauert diese Query sehr lange, bis zu 5 Sekunden. Normalerweise braucht sie 30msec.
Andere Queries brechen nicht so ein.
Nun meine allgemeinen Fragen:
a.) bedeuten diese 5 Sekunden, daß solange die Datenbank mit dieser Query beschäftigt ist ?
Weil ich den Eindruck habe, daß die 5 Sekunden eventuell ein Puffern der Abfrage beinhalten.
b.) was bedeutet das, wenn einige Abfragen unter Last länger dauern und andere nicht ? Kann es mit der Tabellengröße zu tun haben ?
c.) manchmal kriege ich den Fehler '...more than 'max_user_connections' active connections....'. Ich vermute einen Zusammenhang - das Einbrechen der Queries ist immer so das was vor diesem Fehler passiert.
Ich habe die Anzahl der 'max_user_connections' bereits erhöht, aber ohne wirklichen Erfolg.
Was habe ich noch für Möglichkeiten ?
Gruß, Flash