Seite 1 von 2
Datenbankabfrage ermitteln
Verfasst: 04.02.2009 09:43
von Highwayman
Hallo
Ich habe zur Zeit das Problem, dass seit einigen tagen das Forum sehr träge ist! Laut Auskunft des Hosters liege es daran, dass bei jeder Abfrage im Forum, bzw. bei jedem Klick im Hintergrund 2-4 identische MySQL Abfragen ausgelöst werden.
Wie stelle ich fest, was das für Abfragen sind!
Schönen Tag
Highway
Re: Datenbankabfrage ermitteln
Verfasst: 04.02.2009 13:28
von Mahony
Hallo
Aktiviere mal in der config.php den Debug-Modus und schau dann unter EXPLAIN (im Footer des Forums) nach, was die Probleme verursacht.
Grüße: Mahony
Re: Datenbankabfrage ermitteln
Verfasst: 05.02.2009 02:57
von Highwayman
Mahony, zuerst mal danke. Nur ehrlich gesagt, ich weiss nicht was ich mit diesen Daten anfangen soll! Ich habe es mal verlinkt:
Klicke hier
Gruss aus Thailand
Bruno
Re: Datenbankabfrage ermitteln
Verfasst: 05.02.2009 03:35
von Mahony
Hallo
Lies dir mal diese Dokumentation durch
EXPLAIN-Syntax (Informationen über ein SELECT erhalten)
Wichtig sind hierbei die folgenden Aussagen:
# Using filesort
MySQL muss einen zusätzlichen Durchlauf vornehmen, um zu ermitteln, wie die Datensätze in sortierter Reihenfolge abgerufen werden können. Diese Sortierung erfolgt, indem alle Datensätze entsprechend dem Join-Typ überprüft und Sortierschlüssel sowie der Zeiger auf den Datensatz für alle Datensätze gespeichert werden, die der WHERE-Klausel entsprechen. Die Schlüssel werden dann sortiert und die Datensätze entsprechend in sortierter Reihenfolge abgerufen. Siehe auch Abschnitt 7.2.12, „ORDER BY-Optimierung“.
Wollen Sie Ihre Abfragen so schnell wie möglich machen, dann sollten Sie nach den Extra-Werten Using filesort und Using temporary suchen.
Bei den Abfragen, wo using filesort angezeigt wird, bedeutet dies, dass kein Index für die Sortierung verwendet werden kann und MySQL sortiert dann recht aufwendig eben über dieses filesort.
Kandidat Nummer eins für eine Optimierung ist in jedem Fall dein verwendeter Album MOD (soweit ich das den Abfragen entnehmen konnte).
Kandidat Nummer zwei wäre dann noch der wwh MOD.
Von welchem MOD die Abfragen
mit einer Dauer von über 2 Sekunden stammen, kann ich so nicht sagen.
Ich nehme an, es handelt sich dabei um einen Statistik-MOD. Dieser MOD verbraucht die meisten Ressourcen und muss entweder optimiert oder eben ausgebaut werden.
Grüße: Mahony
Re: Datenbankabfrage ermitteln
Verfasst: 05.02.2009 03:57
von Highwayman
Mahony hat geschrieben:Lies dir mal diese Dokumentation durch
EXPLAIN-Syntax (Informationen über ein SELECT erhalten)
Kandidat Nummer eins für eine Optimierung ist in jedem Fall dein verwendeter Album MOD (soweit ich das den Abfragen entnehmen konnte).
Kandidat Nummer zwei wäre dann noch der wwh MOD.
Danke dir vorerst, nur wenn ich deinen Link öffne, dann wird es mir schwarz vor Augen. Datenbank war und ist ein Graus für mich, etwas, was mich sofort zum Schwitzen bringt, trotz dem Ventilator neben mir!
Zu deinen Kandidaten eins und zwei! Ich war immer der Überzeugung, dass gerade von Nick keine zu grossen Abfragen kommen! Und das interessante ich ja auch, dass es erst seit Freitag Abends so ist und ich von Mittwoch bis Sonntag nichts änderte am phpbb, da ich auf Reisen war!
Gruss
Bruno
Der sich nun ein grosses Badetuch zum Schweiss abtrocknen holt und dann nochmals den Versuch startet mit dem Text!
EDIT zu deinem Nachtrag:
Als letztes hatte ich den User Log eingebaut, werde den mal wieder rausschmeissen und schauen!
Re: Datenbankabfrage ermitteln
Verfasst: 02.11.2010 11:28
von deville1968
dann springe ich hier mal rein, da ich auch teils elende zugriffszeiten habe. anbei der screenshot, wenn ich den richtig deute, fehlen hier also indizes in der phpbb_forums . aber welche?
[ externes Bild ]
Re: Datenbankabfrage ermitteln
Verfasst: 03.11.2010 22:08
von deville1968
*bump*
Re: Datenbankabfrage ermitteln
Verfasst: 03.11.2010 22:36
von Charlie_M
Ich hab auch eine Frage dazu Ich hab eine Seite integriert und mal die Abfragen überprüft...nun, da kommen ein paar Meldungen raus wie:
***.php on line 456: Undefined variable: name_of_variable
Muss ich mir darum Gedanken machen, also quasi ein "Anfängerfehler" und wie lös ich das am Besten?
Danke & Gruß
Re: Datenbankabfrage ermitteln
Verfasst: 03.11.2010 22:42
von Mahony
Hallo
wie lös ich das am Besten?
Du solltest die Variablen definieren (so wie es die Meldung dir auch sagt).
Beispiel:
Code: Alles auswählen
$variable = 0; // Deklaration und Initialisierung als INTEGER (Ganzzahl)
$text = ""; // string (Zeichenkette)
Grüße: Mahony
Re: Datenbankabfrage ermitteln
Verfasst: 03.11.2010 23:30
von Charlie_M
Danke...definieren kenn ich halt bei anderen Programmiersprachen anders - als Typ.
