Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
SQL Query time extrem hoch (Select Query)
#1
Hallo leute,

habe ein Forum mit 120.000 Beiträgen, 50.000 Usern und habe schon seit einer Weile enorme Performance probleme, erst dachte ich, es liegt an der Ajax Shoutbox, die ich dann auch eingegrenzt hatte, aber dann gab es ein weiteres Problem, worum ich mich jetzt erst drum kümmern konnte, obwohl es schon eine weile present ist.

Vorab, an der Serverleistung liegt es definitiv nicht Smile

Es gibt eine Query, die extrem langsam durchgeführt wird, und zwar geht es um threads table, soweit ich sehen konnte (bitte korrigiert mich, wenn ich falsch liege). Habe mal eine Screenshot angehangen.
   

Habe auch schon einiges gelesen und bin auf einen Beitrag von MyBB.com gestoßen, der ein eventuell ähnliches Problem hatte, nur ist der Beitrag von 2006. https://community.mybb.com/archive/index...10962.html

Wäre toll, wenn Ihr helfen könntet, danke Smile
Zitieren
#2
Hast du irgendein Plugin auf der Indexseite, das ungelesene Threads anzeigen soll?
Zitieren
#3
Die einzigen Plugins, die direkt die Startseite betreffen sind: ProStats, die Shoutbox (an der liegt es aber nicht), sidebars plugin und das war es auch schon. Habe auch Xthreads installiert, wegen einer Coveranzeige aber die sind nicht auf der Startseite zu sehen.

Nutze das Theme iGame von iAndrew
Zitieren
#4
Okay, das von dir gezeigte Query stammt aus prostats.php

PHP-Code:
      $query $db->query ("
              SELECT t.subject,t.username,t.uid,t.tid,t.fid,t.lastpost,t.lastposter,t.lastposteruid,t.replies,t.visible,tr.uid AS truid,tr.dateline,tp.displaystyle AS styledprefix,f.name 
               FROM "
.TABLE_PREFIX."threads t 
               LEFT JOIN "
.TABLE_PREFIX."threadsread tr ON (tr.tid=t.tid AND tr.uid='".$mybb->user['uid']."') 
               LEFT JOIN "
.TABLE_PREFIX."threadprefixes tp ON (tp.pid = t.prefix) 
               LEFT JOIN "
.TABLE_PREFIX."forums f ON (f.fid = t.fid) 
               WHERE (t.visible = '1' "
.$vcheck.") 
               "
.$unviewables['string'].
               AND t.closed NOT LIKE 'moved|%' 
               AND t.visible != '-2' 
               AND f.active = '1' 
               ORDER BY t.lastpost DESC 
              LIMIT 0,"
.$NumOfRows); 

Allerdings kann ich das bei mir ausführen und das Query ist gar nicht langsam. Mein explain sieht da aber auch anders aus, einfache simple lookups, bei dir irgendwie ein full search.

Wie sieht denn die Struktur deiner forums Tabelle aus?
Zitieren
#5
Das es an Prostats liegt, hätte ich ehrlich gesagt nicht vermutet. Ich werde, wenn ich von Arbeit wieder da bin mal prostats zeitweise ausstellen. Und mal schauen.

Welche Foren Tabelle meinst du denn ?
Zitieren
#6
gibt nur die eine ;=) TABLE_PREFIX."forums f

in phpmyadmin (oder adminer oder was immer du benutzt für deine datenbank) mal auf struktur gehen, liste der felder und indizes und welche engine und so zeugs...

Deinem Explain zufolge wird auf die forums Tabelle ein full search gemacht sogar mit temporary und pipapoh, ich sehe an dem query nur nicht wozu das nötig sein sollte und bei mir ist das auch nicht so

Es wird f.active abgefragt vielleicht bringt da ein Index auf active was. Ansonsten natürlich f.fid aber das sollte eh der primary key sein.

Was normalerweise eher stört ist das LIKE "moved|%", Stringvergleiche im Query sind doof, aber da hab ich im Bugtracker von MyBB einen Eintrag gesehen, daß man diese Struktur ändern will. Möglicherweise würde es aber auch reichen diese Bedingung zu invertieren (t.closed IN (0,1,2,3)) was immer da die gültigen numerischen Werte sind, falls moved| der einzige nicht-numerische Wert ist. Hmmm. Egal.
Zitieren
#7
Achso, du meinst die "forums" tabelle, war mit dem Begriff Tabelle gerade nicht "im reinen" weil ich immer table sage, also englisch halt Big Grin.

Die Engine ist aktuell MyISAM, hatte zwischenzeitlich auch mal auf InnoDB gewechselt. Ich hoffe das ich das, was du sehen wolltest. Weiter unten ist dann noch das xthreads zeug, das habe ich dann weggelassen, weils uninteressant dafür ist.
           


Desweiteren habe ich mal ein anderes Plugin für Stats ausprobiert, das selbe Problem nur etwas kompakter Big Grin

Ich probiere mal einen index auf active zu machen Smile
Zitieren
#8
Selbst ein Index auf active bringt kaum was, eine leichte verbesserung gibt es, aber nicht wirklich viel.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  [geteilt] Hoch- bzw. tiefgestellte Zeichen - BB Code oder Editor? KleineHexe 26 1.137 20.08.2024, 17:12
Letzter Beitrag: [ExiTuS]
  Thread-Views zählen nicht hoch unter PHP8 bv64 9 1.756 05.01.2023, 23:43
Letzter Beitrag: fernhafen
  Mybb1.8.10 extrem langsam ehorn 9 2.695 16.02.2017, 21:10
Letzter Beitrag: ehorn
  Erster Aufruf einer Forumseite dauert extrem lange Sesom42 6 3.274 27.04.2016, 16:25
Letzter Beitrag: StefanT
  Hoch- bzw. tiefgestellte Zeichen - BB Code oder Editor? hoerbartina 4 1.507 01.10.2015, 19:59
Letzter Beitrag: hoerbartina