hotti: Studie: MySQL vs. Datei

Beitrag lesen

Hallo Jörg,

Mit der Dateilösung hingegen habe ich einen riesen Hash im Hauptspeicher, bei jedem Request entsteht ein Burst. Kommt mir da die Hardware entgegen, ist da was zu Cachen?
Naja, im Prinzip hast Du ja schon so etwas wie einen Cache gebaut, in dem Du alle Daten zu Beginn in den Hauptspeicher lädst (ob von Platte oder Datenbank ist ja dann eigentlich schon egal).

Dateilösungen haben durchaus ihre Daseinsberechtigung. Es ist nur so, dass im reinen CGI-Betrieb (mod_cgi) jeder Request einen eigenständigen Prozess erzeugt und der jeweils seinen eigenen Hash in den Hauptspeicher legt, da kann sich Einiges zusammenläppern ;)

Mod_perl, da sieht das schon ganz anders aus: Da habe ich den Hash nur einmal, auch dann, wenn der Apache mehrere Prozesse forkt. Ich werde eine Konfiguration und eine Routingtable jedoch NICHT beim Starten des Webservers laden (das erschwert eine etwaige Fehlersuche, Logdatei gucken und so..) und auch nicht bei jedem Request sondern nur einmal beim ERSTEN Request: In diesem Fall greift meine Fehlerbehandlung und ich sehe im Browser, wenn da was schiefgegangen ist.

Nachdem der ERSTE Request auf eine beliebige Seite den MEMCache betankt hat, wird bei jedem weiteren Request nur noch in den Cache gegriffen.

Über mein Flush-Konzept (MEMCache auffrischen) muss ich noch nachdenken, es gibt auch CPAN-Lösungen die mir evntl. ins Konzept passen.

Den Overhead für das Aufbauen einer Verbindung kann man übrigens dadurch reduzieren, dass man die Datenbankverbindung offen lässt. In  einer klassischen CGI-Umgebung ist das natürlich Quatsch (denn  da werden nach jedem Request üblicherweise sämtliche File-Handle und somit auch Datenbankverbindungen geschlossen), aber mit FCGI z.b. kann man ja durchaus Mechanismen bauen, bei denen beim Server-Start eine Verbindung aufgebaut wird, die dann für alle Requests gehalten wird.

Der Server-Start ist nicht unbedingt die beste Zeit für sowas, siehe weiter oben.

Schöne Grüße,
Flush!