Seite 3 von 5
Verfasst: 17.11.2003 11:39
von Gast
Kannst du einen altuellen query-log einstellen bei der so eine langsame Query drin ist?
Verfasst: 17.11.2003 17:58
von Chrischn25
... ich lasse eben wieder mitloggen.
Stelle ich i.L.d. Abends ein!
Grüße,
Chrischn
Verfasst: 17.11.2003 21:10
von Chrischn25
Hier ist es:
http://www.klein-putz.de/log/slow-query.log
Allerdings hält es sich nach dem Auskommentieren der remove_common echt in Grenzen. Läuft das Log aber mehr als 4 oder 5 Tage, ist es auch schon wieder knapp 1 MB groß...
Grüße,
Chrischn
Verfasst: 18.11.2003 00:19
von R. U. Serious
Du kannst in der search.php natürlich noch die Zeile
löschen, da dies ja nun sowieso nicht mehr genutzt wird. Die Verbesserung bewegt sich aber im hundertstel-Bereich, wird also nicht viel bringen.
Wär mal interessant zu gucken ob sich noch andere Queries dazu gesellen, oder ob es nur dabei bleibt.
Denn die Qeury kann man sonst nicht weiter optimieren. Es sind indices auf den genutzten Feldern, und die werden bei der Abfrage auch benutzt. Ich würde da allenfalls noch gucken ob man bei der Optimierung von mysql noch was drehen kann ( evtl. zugewiesener Speicher?), denn die Queries machen bei den anderen mir bekannten Boards nun keine grossen Schwierigkeiten (da sollten erstmal andere Flaschenhälse kommen).
Verfasst: 15.01.2004 13:57
von modellskipper
Hallo Leute,
In Bezug auf die Suchtabellen, habe ich festgestellt, dass es in der search_wordmatch-Tabelle zu Doppeleinträgen kommt. Selbst nach einer gestrigen Durchsicht und Entfernung von Doppeleinträgen sind heute schon wieder 120 von über 420.000 Einträgen doppelt gespeichert.
Nach dem Durchlauf des Database Maintenance kommt es zur Meldung:
Code: Alles auswählen
Checking for unnecessary search words
Nothing to do :-)
Ich habe "immer noch" Version 2.0.4 installiert, so frei nach Murphy "don't tuch"
Macht es dann nicht Sinn von vorherein einen eindeutigen Schlüssel über die Felder post_id und word_id zu setzen?
Kann eigentlich was passieren, wenn ich die doppelten rausfische und ich nachträglich den Index setze?
Gleich in diesem Zusammenhang mit Vermeidung von unnötigen Datenaufkommen mal eine Frage an die Spezies. Ich programmiere schon seit einigen Jahren auf Datenbank, z.B. Access und MySql und deshalb drängt sich mir die Frage auf, warum die Tabelle posts und posts_text getrennt gespeichert werden. Bei mir haben beide die gleiche Anzahl von Datensätzen?
Verfasst: 15.01.2004 15:30
von R. U. Serious
Eigentlich sollten keine doppelten drin sein. Vielleicht hast du einen Bug drin, dass beim editieren die alten Einträge nicht entfernt werden? Hast du Mods eingebaut?
Oder aber die Wörter kommen mehrfach im Beitrag vor? Ich weiss nicht wie das genaue Verhalten von phpbb da ist, aber ich vermute mal die doppelten Worte in einem Beitrag werden nicht rausgefischt.
Der Split der posts_table und posts_text_teable hat performance-Gründe. Weil die posts_table klein bleibt und auf die Daten dadrin häufiger zugegriffen werden muß, als auf die posts_text-Daten. Es lohnt sich trotz des Overheads für Joins und mehr inserts. AFAIK haben sie selber an einer Stelle mal gesagt, dass sie beides getestet hätten, und es so eben schneller war.
Verfasst: 15.01.2004 16:15
von modellskipper
R. U. Serious hat geschrieben:Hast du Mods eingebaut?
eigentlich nur Map-Mod.
doppelten Worte in einem Beitrag werden nicht rausgefischt
Wäre die einzige logische Erklärung. Was ist dann bei Mammutpostings ??
Aber die Frage jetzt rein retorisch
Split der posts_table und posts_text_teable hat performance-Gründe
Danke
Verfasst: 16.01.2004 00:20
von R. U. Serious
Ich hab das nochmal getestet. Folgende Observationen:
- Multiple Worte in einem Beitrag werden nur
einmal in die match-table eingetragen
- idR kommt jede Kombination nur einmal vor.
- Dort wo es doppelte Kombinationen gibt, bruacht man den Post nur zum editieren öffnen und wieder speichern, dann sind die doppelten einträge weg.
Daher schliesse ich, dass die doppelten Einträge im mathc-table durch unregelmässigen im db-betrieb, beim gleichzeitigen Editieren o.ä. auftreten. Bei unseren ca. 2 Millionen Einträgen war das häufigste Vorkommen von einer einzigen Kombination 4 mal, und das beschränkte sich auf genau 2 Beiträge ( aus ca. 60.000), Bei allen übrigen doppelten war es 2 mal (das waren schon eine ganze Menge mehr....)
Grob überschlagen könnten wir durch eliminieren von doppelten Einträgen, ca. 100.000 (von ca. 2 Millionen) Einträge löschen, also 0,5%
Das war mir dann weiteren Aufwand nicht wert...

Verfasst: 16.01.2004 00:57
von Shadowman
ich hab mal ne frage, wieso leert ihr denn diese tabelle nicht einmal im monat, oder nur die hälfte, denn 300 mb nur für die blöde search tabelle is ne menge, das ist das, was ich zur zeit zur verfügung habe, zwar werde ich auf 1gb aufrüsten, doch das is mir einfach zu viel, es wäre praktisch wenn man alle 4 wocehn die hälfte der tabelle entleert, so wird sie nicht so wahnsinnig gross.
Verfasst: 16.01.2004 01:24
von R. U. Serious
Shadowman hat geschrieben:ich hab mal ne frage, wieso leert ihr denn diese tabelle nicht einmal im monat,
Weil ohne die Tabellen die Suche nicht funktioniert. Wenn man ein Board hat was hauptsächlich durch Small-Talk und schnelles posten lebt, dann ist das zwar eine Prima-Lösung, aber für viele Boards die sich bestimmten Sachthemen zuwenden, wäre es fatal wenn die Suche nicht mehr ginge:
- erstens wäre alles gute/wertvolle geschriebene "Verloren"
- zweitens gäbe es nichts worauf man die Newbies hinweisen könnte

*SCNR*
Im Einzelfall gibt es also sicherlich Leute die diese Tabellen auch löschen.
