phpbar.de logo

Mailinglisten-Archive

Re: [php] Session schneller als Datenbank-Query? / Alles über Hauptdatei

Re: [php] Session schneller als Datenbank-Query? / Alles über Hauptdatei

Andreas Ahlenstorf lists at ahlenstorf.ch
Mit Jan 12 01:39:07 CET 2005


Actra AG Internet Services schrieb:

> Gemäss Webalizer Version 2.01 werden durchschnittlich pro Tag
> über 200'000 Hits gezählt. Ich habe nun den Eindruck, dass seit
> der Umstellung auf das neue System, das alle Requests über die
> hauptdatei.php im Root laufen, die Performance schlechter
> geworden ist, als dies beim alten System der Fall war. Kann das
> sein?

Ja. mod_rewrite kostet zusätzlich Performance. Normalerweise
allerdings nicht so viel, dass man es merkt. Vielleicht muss
hauptdatei.php auch ein bisschen mehr arbeiten als die
vorgenerierten Scripts?

> Meine Frage wäre nun grundsätzlich, ob es auf die Performance
> eine positive Auswirkung hätte, wenn ich nun nur noch beim Login
> die individuellen Userdaten aus der Datenbank abfragen und diese
> dann in einer Session speichern würde, anstelle bei jedem neuen
> Request immer dieselben Datenbankabfragen machen zu müssen? Oder
> hat dies keine Auswirkung auf die Geschwindigkeit? Ich könnte

Damit könntest du den Druck auf die Datenbank massiv senken.
Grundregel für jede Webapplikation: So wenig Queries wie möglich. Je
mehr Queries du auf die Datenbank losläst, umso mehr hat die
Datenbank zu tun. Irgendwann kommt der kritische Zeitpunkt, bei dem
sich lesende und schreibende Zugriffe ins Gehege kommen. Also
probiert man zu allererst, so wenig zu schreiben wie möglich. Dann
muss man probieren, so wenig zu lesen wie möglich, weil wenn die
Datenbank schreibt, kann sie nicht lesen und die Requests stauen
sich auf [1]. Insbesondere bei einer Zugangsverwaltung ist eine
Überprüfung bei jedem Klick nicht sinnvoll. Denn dafür gibt es Sessions.

> z.B. mit einer Session Bestätigen, dass diese und jene
> Datenbankabfragen bei dieser Sitzung schon durchgeführt wurden 
> nicht nicht bei jedem Anklicken eines Links neu gemacht werden
> müssen. Würde das etwas bringen?

Sehr viel.

Gruss,
Andreas

[1] Hängt von der Storage Engine ab - Engines, die Row- oder
Page-Level-Locking machen, können zwar gleichzeitig lesen und
schreiben, sind dafür etwas langsamer beim Lesen und erzeugen einen
grösseren Overhead.

php::bar PHP Wiki   -   Listenarchive