Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Performance-Optimierungen in einem Forum

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 01.10.2009, 22:55


Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 02.10.2009, 08:19

Toll jetzt bin ich hin- und hergerissen :P

Dann bleibe ich wohl doch bei MyISAM, nur dass ich mir für die Volltextsuche eine alternative suche. Aber da warte ich erstmal wie schnell die aktuellste MySQL-Version mittlerweile damit umgehen kann. Dann entscheide ich weiteres.
Ich kaufe Dein Forum!
Kontaktdaten

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 02.10.2009, 09:03

Bei 1 Millionen Beiträgen mit je 20 Wörtern hat man schon ca. 10 Millionen Zeilen im word table. Die müssen erstmal durchsucht werden.
Naja, nicht unbedingt. Bzw. kannst Du das mal näher erklären?

10 Millionen Wörter finde ich heftig. Gibt es so viele überhaupt? Mein System ist etwa in der Art und ja, weil Du es sagst, ist auf Basis des phpbb entstanden.

Bei mir kommen die Wörter alle in eine wort_table mit unique_index auf "wort". Dazu natürlich eine wort_id. Da kam ich bisher maximal auf etwa 85.000 Wörter in den letzten 3 Jahren.

Dann gibt es als Verknüpfung die treffer_table, in der die wort_id und die artikel_id ist. Index liegt dort über beide Spalten. Derzeit ca. 1.150.000 Datensätze.

Kommt nun eine Suche, dann wird erst die wort_db befragt ob es das Wort gibt. Also eine Suche innerhalb von 85.000 Datensätzen anhand dem unique_index. Wenn es dort Treffer gibt, dann wird die wort_id ausgelesen. Danach wird dann in der treffer_table gesucht. Suche nach INT anhand eines Index.

Also bei mir geht das sehr schnell.

Auch die Inserts benötigen nicht für jedes Wort eine Abfrage. Man kann auch alle abfragen die im jeweiligen Artikel sind. Für die, bei denen es keinen Treffer in der wort_table gibt, wird ein Insert (einer für alle) durchgeführt.

Anschließend werden genau die eben neu eingetragenen abgefragt um die wort_id zu bekommen (ein Select).

Dann frage ich die treffer_table ab zu den Wörtern die schon da waren und die entsprechende artikel_id besitzen (Ein Select). Auch hier werden danach die verwendet die keinen Treffer liefern.

Die wort_id der neuen Wörter sowie die wort_id ohne Treffer bei dem Artikel werden dann mit der jeweiligen artikel_id in die treffer_table geschrieben.

Oder denke ich da verkehrt und es läuft bei mir nur zufällig und der Tod steht bevor?