Zum Inhalt springen

cached_pages läuft voll

Erstellt am 10. April 2006 · 2 Antworten · letzte Antwort am 11. April 2006

Tags: Datenbank, Frage

crimson ·

Hallo Forum,

bei einem unserer Projekte läuft uns die Tabelle cache_pages nach ca. 3 Tagen voll (MySQL erlaubt ja nur 4 GB Tabelleninhalt). Das ist im Grunde nicht weiter schlimm, wie mir scheint, denn die Performance der Website wird davon anscheinend nicht betroffen. Natürlich könnte ich einen Cronjob einrichten, der die Tabelle alle paar Tage leert, ich frage mich aber was besser ist?

Was passiert genau, wenn die Tabelle voll ist? Werden einfach keine neuen Seiten gecached und statdessen live ausgeliefert? Oder werden neue Seite gecached und ältere weniger oft abgerufene Seiten dafür aus der Datenbank geworfen?

Ich hoffe Ihr könnt mir ein paar Tipps geben.

Viele Grüße aus Köln
der André

Ups: Ich glaube ich hab den falschen Bereich erwischt. Eventuell kann ein Admin/Mod dden Thread verschieben? (Installation, Diverses?) Wohin es am besten passt., danke

woida ·

Hab den Beitrag mal in "Diverses » Diverse Fragen" verschoben.

Welche MySQL-Version setzt du denn ein? MySQL erlaubt ja seit 3.23 einen Tabellengröße von 8Mio TB. Die Beschränkung auf 4GB liegt dann wohl an deinem Dateisystem.

Was passiert, wenn die Tabelle überläuft, weiß ich nicht genau. Hatte den Fall noch nicht. Aber ich gehe mal davon aus, daß eine Fehlermeldung ausgegeben wird.
Entweder setzt du ein anderes Dateisystem ein, oder du beschränkst das Caching der Seiten im Seitenheader. So kannst du auch eine Priorisierung vornehmen:
Unwichtige Seite werden z.b maximal 1h gechacht
Mittlere Priorität darf 1 Tag im Cache bleiben und
wichtige Seiten dann 2 Tage.

Wenn du viele Seiten hast (wovon ich mal ausgehe) kannst du die Werte auch direkt über ein UPDATE in die pages eintragen.

crimson ·

Hallo woida,

erst mal vielen Dank für's verschieben.

Wir setzen MySQL Version 4.1.1 ein, auf ner Suse 9 irgendwas. Ich hab auch noch mal mit meiner SysAdmin gesprochen. Es liegt wohl an der Dateigröße auch wenn der Kernel mehr erlaubt. Einstellungssache...

Hatte den Fall noch nicht. Aber ich gehe mal davon aus, daß eine Fehlermeldung ausgegeben wird.

Das schöne ist, das eben das nicht geschieht. Im Frontend geschieht nix. Die Seite wird wie gewohnt ausgeliefert, ohne das ich Performanceeinbußen feststellen kann. Auch im BackEnd merkt man nichts von der vollen Tabelle.

Das Caching ist schon richtig eingestellt, denn ich möchte aus Serversicht gar nicht, dass die Seiten zu schnell aus der DB fliegen. Ich werde also mal mit MYSQL und dem Filesystem "spielen" müssen. Vielleicht lasse ich es auch so wie es ist, denn zur Zeit sehe ich keinen Nachteil.

Schön wäre wenn ich bestimmten Seiten sagen könnte: "wenn die Tabelle voll ist und eine neue Seite rein will, geh Du raus".

Denn es gibt schon Seiten wo es wichtiger ist, dass Sie im Cache liegen, die aber öfter aus dem Cahce gelöscht werden, weil Sie ständig editiert werden.

Andere Seiten könnten eigentlich fast ewig im Cache bleiben, da sich der Inhalt kaum verändert. Diese Seiten beinhalten eine mächtige DB-Abfrage was auch dafür spricht, dass Sie im cache verweilen. Das Problem ist, dies können theoretisch ca. 160.000 Seiten sein und die passen nicht in den cache... Andererseit werden einige dieser Seiten ziemlich selten aufgerufen andere dagegen sehr sehr oft.

Naja das Ganze ist relativ verzwickt und ich komme wohl nicht drumherrum, ein wenig zu experimentieren.

Viele Grüße
der André