Buffer-Daemon für MySQL Querys

kevkev

Erfahrenes Mitglied
Hallo,

Ich habe eine Seite bei der um die 400 Querys pro Sekunde (laut mysqladmin version) in den MySQL Server rauschen.
Um der hohen Last etwas entgegen zu wirken, kam mir folgende Idee:

Im Hintergrund läuft ein Daemon, der alle MySQL Querys zwischen cached, und erst nach ungefähr 100 Querys alle wegschickt.
So würde die Seite schneller laden, und der MySQL Server würde nicht dauernd parallel mit Querys beschossen werden, sondern nur einmal alle 5 Minuten.

Gibt es soetwas bereits? Eventell sogar auch für PostgreSQL?
Wie die Querys von php aus übertragen werden, ist vorerst egal (notfalls über file-ebene), muss also kein Wrapper für die mysql_*() Funktionen sein.

Edit:
Es sind natürlich nur INSERT oder UPDATE Querys, niemals Select oder andere Querys.

Gruß
Kevin :)
 
Zuletzt bearbeitet:
Du solltest dich mal mit Themen wie Caching oder Replikation beschäftigen ;)
Ein Blick auf das Tool "MySQL Proxy" ist vllt auch ganz interessant.
 
Replikation funktioniert mit dem was ich vorhabe nicht ;).
Und bzgl. Cache kenne ich das nur von Selects, nicht aber von Inserts.

Habe mir das Tool angeschaut, finde da aber nichts was mir irgendwie weiterhelfen könnte :confused:

Gruß
kevin :)
 
Replikation funktioniert mit dem was ich vorhabe nicht ;).
Begründung?

Und bzgl. Cache kenne ich das nur von Selects, nicht aber von Inserts.
dein Einführungspost ist auch sehr schwammig und gibt keinerlei Infos über dein genaues Problem, deshalb kann man dir schwer helfen. Da diese Menge an Querys ziemlich komisch ist (es seidenn es ist ne sehr gut besuchte Seite) vermute ich einen Designfehler deinerseits. Du musst zB nicht alle Daten einer Seite bei jedem Zugriff neu laden, sondern kannst den Inhalt cachen, damit habe ich zB bei einem Projekt 70% Last gespart.

Habe mir das Tool angeschaut, finde da aber nichts was mir irgendwie weiterhelfen könnte :confused:
Wie gesagt, gibt es keine konkreten Probleme gibt es auch keine konkreten Lösungen ;)
 
Ich betreibe einen Imagehoster, der bei jedem Aufruf einen INSERT für die Statistik erzeugt.
Da die Statistik weit hinter der Geschwindigkeit steht, brauch die Statistik nicht aktuell sein, sondern kann 5 Minuten verzögert sein.

Daher hatte ich vor, die INSERTs für die Statistik zwischen zu speichern, um sie später gezielt zu inserten.

Ich hoffe ich habs diesmal besser rübergebracht :).

dein Einführungspost ist auch sehr schwammig
Sorry, ich war grad mitten in der Thematik, da schreibe ich oft so, als würde das Forum bereits wissen was ich will :D.
 
mache bei einem Aufurf kein Insert sondern ein Update in einer Stats-Tabelle (view=view+1), denn das ist deutlich schneller ;) (hängt mit den interna zusamen)
Einde noch bessere Lösung wäre es GAR NICHT live alles upzudaten, lasse es wie es ist und lese mit einem CronJob aus deinem Log, was dir jeder Webserver bietet, die Daten aus welches Bild angezeigt wurde ;)
Das machste alle 5min und dann musst du auch nicht tausendmal ein Bild updaten sondern kannst die ja alle gleich addieren ;)

Zudem würde noch das ändern der Tabelle von MyIsam auf InnoDB eine Performance-Steigerung bringen, da damit parallele Schreibzugriffe auf eine Tabelle möglich sind.
 
Zurück