Probleme mit Server-Auslastung bei mySQL

Feldhofe

Erfahrenes Mitglied
Hallo!

Meine Seite läuft unglaublich langsam...laut Auskunft des Serverbetreibers (Hosteurope) liegt das an den unglaublich vielen mySQL-Anfragen, dadurch wird die gesamte Seite lahm (mySQL läuft als localhost, nicht auf einem Extra-Server).

Nun ist die Frage, was man da machen kann?
Schaut euch meine Seite mal an: SUPERLYRICS.

Möglicherweise ließen sich die Zahl der mySQL-Anfragen reduzieren, bloß wie?

Zur Zeit lasse ich jeden Sch... per "select * from tabelle where yyy=xxx" usw. suchen -sicher ist das nicht so sinnvoll, oder?
Wäre klasse, wenn ihr mir ein paar Tipps geben könntet!

Gruß Feldhofe
 
Örks, das ist ein ziemlich schwammiges Thema mit der Performance. Wenn Du wirklich viele Daten hast, die durchsucht werden müssen, wird ein Index der Daten in der Datenbank schon nicht schlecht sein. Dadurch wird zwar die Datenbank etwas größer, aber die Suchanfragen schneller.

Die besten Tipps bekommst Du aber auf MYSQL.COM

Eine kleine Auswahl:

Indexes:
http://www.mysql.com/doc/en/Indexes.html

Fulltext Finetuning:
http://www.mysql.com/doc/en/Fulltext_Fine-tuning.html

Estimating Performance:
http://www.mysql.com/doc/en/Estimating_performance.html
 
wie wäre es, einen großteil als html zu generieren? Ich denke mal, das es mit den meißten seiten gut machbar wäre. Dann hast du auch nicht mehr das DB problem.

Kannst das ja so machen, das bei änderungen, die Seite erneut generiert wird. Dann ist auch der Seitenaufbau schneller
 
Also es sind so ca. 25.000 Datensätze in der Datenbank, das sind Songtexte, die jeweils in
INTERPRET
TITEL
SONGTEXT
ID

abgespeichert sind.
Wenn jetzt jemand die Suche betätigt, wird in dem Schema
select * from songtexte where interpret="%in the slaughterhouse%
gesucht.
Sicherlich nicht so sonderlich gut -ich hatte mir schon überlegt, ob es sinnvoll wäre, eine TXT-Datei anzulegen, in der alle Interpreten, Titel mit entsprechenden IDs eingetragen sind und dass zuerst immer da gesucht wird, anstatt die gesamte mySQL zu durchforsten -wäre das sinnvoll??

Gruß Feldhofe
 
Ich würde als erste Maßnahme mal bei den ganzen "SELECT *" checken, ob du auch wirklich alle Tabellenspalten auslesen musst. Bei deiner Suchabfrage ist dies z.B. meines Erachtens nach unnötig, da du ja kaum bei der Auflistung der Suchergebnisse gleich den gesamten Songtext ausgibst. Ein "SELECT id, interpret, titel FROM ..." würde da auch schon reichen. Man sollte überhaupt immer die Spaltennamen angeben, auch wenn man alle Felder braucht. Könnte ja sein, dass du die Tabelle mal um eine Spalte erweiterst, und dann hast du wieder Daten übertragen, die du gar nicht brauchst.
 
Hmm...hab nochmal nachgeguckt, das habe ich eigentlich schon fast überall.
Wie wäre denn das mit der TXT-Datei, wäre das sinnvoll??

Feldhofe
 
ich find die variante mit dem HTML generieren besser bei ner schwachen oder überlasteten Datenbank. Wie gesagt, dann ist auch der seitenaufbau schneller... es gibt meines wissens nach Hoster, die maximal 7gleichzeitige anfragen oder so zulassen.
 
Original geschrieben von Sway
es gibt meines wissens nach Hoster, die maximal 7gleichzeitige anfragen oder so zulassen.

lol, bei mir tummeln sich in Spitzenzeiten 300 gleichzeitig auf der Seite -kein Wunde, wenn dann nicht mehr viel geht... :)

Mit dem HTML: Wie meint ihr das genau?? Die Leute können ihre Songtexte doch über ein PHP-Formular in die Datenbank hochladen...wie soll das mit HTML gehen??
Und vor allem, wie sollen die HTMl-Seiten wiedergefunden werden, ich kann ja in HTML keine Suchanfragen starten...oder versthe ich jetzt was grundsätzlich falsch??

Gruß
Feldhofe
 
auf welchen feldern haste denn ein index drauf ?

sinn würde es hier machen

INTERPRET
TITEL

ansonsten hoffe ich doch das wenn
zb das suchfeld titel leer ist nicht sowas in der abfrage steht:

where Titel like '%$eingabefeld%'
 
Zurück