Seite 1 von 1

Mysql-Abfragen durch lokalen Cache beschleunigen [PHP]

Verfasst: 31.03.2008 21:10
von a14xerus
Hi, ich programmiere im Moment viel PHP + MySQL.
Vorallem abends ist mein gemieteter Server bei den SQL-Abfragen exrem langsam.
Darum wollte ich gerne wissen, ob jemand eine einfache Methode kennt, Mysql-Abfragen nicht direkt an die DAtenbank zu richten, sondernnur ein paar mal am Tag zu vergleichen, und sonst halt die Abfragen auf einen lokalen Cache umzuleiten (textdateien im Webspace o.ä.).
Zur Not muss ich das dann wohl leider selber programmieren,
Aber vielleicht gibt es sowas ja schon.


Vorgestellt habe ich mir das so:
die mysql_query() und ..._fetch_object() aufrufe durch eigene functionen zu ersetzen, die alles nur lokal speichern, aber halt genau oder so ähnlich wie die echte Datenbank reagieren, und dann regelmäßig alles in die Datenbank zu schreiben.

Danke im Voraus.

Verfasst: 31.03.2008 22:11
von Stefen.R
Ich weiss nicht was Du Dir da vorgestellt hast das Ergebnis von DB Abfragen in ein Textfile zu schreiben, lese und schreibzugriffe auf sowas dauern erheblich länger als alles andere.

Es kommt natürlich darauf an, welche Anwendung überhaupt mit PHP läuft, ein Forum oder ein Portal ect.
Ansonsten dürfte es normalerweise nicht sein, das man so erhebliche Performance Einbrüche hat, oder hast Du 20000 Besucher die gleichzeitig auf der Seite zugreifen, vielleicht solltest Du lieber den Provider wechseln.
Ich weiss nicht ob Du einen eigenen Server hast, denn von reinen Webspace kann man sowieso keine Wunder erwarten.

Natürlich könnte man mit DB Cache arbeiten, aber mit einem DB Zugriff am Tag ist es natürlich nicht gemacht.
Es kommt wie gesagt auch auf das Projekt an, wie oft der Content aktualisiert wird, ein neues Posting usw.

Ich würde aber einen anderen Weg gehen und versuchen nicht die Datenbank zu cachen, sondern lieber die Seiten, das könnte man über
ich weiss nicht ob Dueine Scriptengine wie etwa Smarty machen.
Das entlastet erheblich die Datenbank, der erste Zugriff auf eine Seite dauert zwar etwas länger, dafür wird die Seite dann aber gecached und steht beim zweiten Aufruf erheblich schneller ohne grosse DB Belastung zur Verfügung.
Man müsste sich das ganze mal ansehen, vielleicht kann man das auch relativ schnell nur durch ein paar Änderungen im Script optimieren, da eine nachträgliche Änderung zb. mit Smarty doch sehr viel Aufwand bedeutet.

Verfasst: 31.03.2008 22:19
von a14xerus
Hmm leider habe ich Teilweise so schlechte Verbindung das die Seite garnicht geladen werden kann (No connection to database - To many connections)...
Die Leitung zum Webspace und dessen Leistung ist dagegen super.

Ok ich denke die Seiten zu cachen istdann doch besser....
Nur noch keine Ahnung wie ich das machen soll...
Oder 1&1 verbessert einfach mal seine Leistung...
Da hatte ich ja bei kostenlosen Angeboten ne bessere Performance -.-'

Verfasst: 31.03.2008 22:25
von Stefen.R
Sowas dürfte in der Regel nicht sein, selbst bei 1&1 nicht.
Wieviel Besucher hast Du denn in den Spitzenlastzeiten ?
Oder ist es eher ein Selbstbastelscript, wo am Ende des Requests die Verbindung zur Datenbank nicht wieder sauber geschlossen wird.

Verfasst: 31.03.2008 23:03
von a14xerus
is ja nicht mein Server alleine, hab ja nur ein Webhosting-paket mit MySQL.
Trotzdem findeich, das die anscheinend für einen MySQL-Server viel zu viele Benutzer zugewiesen haben.
Viele Besucher habe ich persönlich nicht.
Die Einzige Homepage die wirklich eine "größere" Besucherzahl hat ist mein Browsergame mit 40 Spielern

//edit: ich schließe die verbindung zwar, aber bei ende des php-scripts wird die doch sowieso geschlossen, oder?
die einzelnen abfragen mit mysql_query() schließe ich allerdings nicht durch mysql_free_result()...
Aber schlägt das nicht eher auf den Ressourcenverbrauh von PHP???

Ich kann 100%ig sagen, das der MySQL Sever die Bremse ist, da ich bei Tabellen (HTML selbst geschireben) richtig sehen kann, das immer bei jeder neuen Zeile die aus der Datenbank geladen wird der Ladevorgang stockt...

Über PHP MyAdmin allerdings ist die Verbindung super